diff --git a/AmberTools/src/Makefile b/AmberTools/src/Makefile index 3d69773..c2a5045 100644 --- a/AmberTools/src/Makefile +++ b/AmberTools/src/Makefile @@ -15,12 +15,6 @@ install: $(INSTALLTYPE) serial: configured_serial THIRDPARTY $(MTKPP) @echo "Starting installation of ${AMBERTOOLS} serial at `date`". # utility routines and libraries: - (cd ucpp-1.3 && $(MAKE) $(UCPP) ) - (cd byacc && $(MAKE) install ) - (cd arpack && $(MAKE) install ); - (cd lapack && $(MAKE) $(LAPACK) ) - (cd blas && $(MAKE) $(BLAS) ) - (cd c9x-complex && $(MAKE) $(C9XCOMPLEX) ) (cd pbsa && $(MAKE) install ) (cd gbnsr6 && $(MAKE) install ) (cd cifparse && $(MAKE) install ) @@ -33,7 +27,6 @@ serial: configured_serial THIRDPARTY $(MTKPP) $(MAKE) cpptraj # miscellaneous: - (cd reduce && $(MAKE) install ) # leap (cd leap && $(MAKE) install ) @@ -103,12 +96,6 @@ serial: configured_serial THIRDPARTY $(MTKPP) nabonly: configured_serial $(XBLAS) # utility routines and libraries: - (cd ucpp-1.3 && $(MAKE) $(UCPP) ) - (cd byacc && $(MAKE) install ) - (cd arpack && $(MAKE) install ); - (cd lapack && $(MAKE) $(LAPACK) ) - (cd blas && $(MAKE) $(BLAS) ) - (cd c9x-complex && $(MAKE) $(C9XCOMPLEX) ) (cd pbsa && $(MAKE) libinstall ) (cd rism && $(MAKE) $(RISM) ) (cd cifparse && $(MAKE) install ) @@ -144,12 +131,6 @@ parallel: configured_parallel THIRDPARTY # (cd pbsa && $(MAKE) clean && $(MAKE) install.parallel ) (cd pbsa && $(MAKE) libinstall ) $(MAKE) cpptraj - (cd byacc && $(MAKE) install ) - (cd ucpp-1.3 && $(MAKE) $(UCPP) ) - (cd cifparse && $(MAKE) install ) - (cd arpack && $(MAKE) install ); - (cd lapack && $(MAKE) $(LAPACK) ) - (cd blas && $(MAKE) $(BLAS) ) (cd mdgx && $(MAKE) $(MDGX) ) (if [ "$(RISM)" = "yes" ]; then \ cd rism && $(MAKE) install_mpi ; \ @@ -215,18 +196,11 @@ netcdf_uninstall: -/bin/rm -f netcdf_config.log ../lib/libnetcdf* ../include/netcdf.* clean:: - -(cd ucpp-1.3 && $(MAKE) clean ) - -(cd byacc && $(MAKE) clean ) - -(cd cifparse && $(MAKE) clean ) -(cd nab && $(MAKE) clean ) -(cd sff && $(MAKE) clean ) -(cd nss && $(MAKE) clean ) -(cd leap && $(MAKE) clean ) - -(cd arpack && $(MAKE) clean ) - -(cd blas && $(MAKE) clean ) -(cd xblas && $(MAKE) clean ) - -(cd lapack && $(MAKE) clean ) - -(cd c9x-complex && $(MAKE) clean ) -(cd etc && $(MAKE) clean ) -(cd chamber && $(MAKE) clean ) -(cd pbsa && $(MAKE) clean ) @@ -236,15 +210,12 @@ clean:: -(cd lib && $(MAKE) clean ) -(cd ptraj && $(MAKE) clean ) -(cd cpptraj && $(MAKE) clean) - -(cd reduce && $(MAKE) clean ) -(cd mtkpp && $(MAKE) clean ) -(cd mdgx && $(MAKE) clean ) -(cd xtalutil/CPrograms && $(MAKE) clean ) -(cd saxs && $(MAKE) clean ) -(cd paramfit && $(MAKE) clean ) -(cd rism && $(MAKE) clean ) - -(cd fftw-3.3 && $(MAKE) clean ) - -($(RM) -f fftw-3.3/mpi/fftw3-mpi.f03 ) -(cd mmpbsa_py && /bin/rm -fr MMPBSA.py.MPI build/ mpi4py-1.2.2/) -(cd mm_pbsa && $(MAKE) clean ) -(cd FEW && $(MAKE) clean ) @@ -315,7 +286,7 @@ $(LIBDIR)/libxblas-amb.a: $(LIBDIR)/libfftw3.a $(LIBDIR)/libfftw3_mpi.a: cd fftw-3.3 && $(MAKE) && $(MAKE) -j 1 install; -THIRDPARTY: $(XBLAS) $(FFTW3) +THIRDPARTY: $(XBLAS) cuda: @echo "$(AMBERTOOLS) has no CUDA-enabled components" diff --git a/AmberTools/src/configure2 b/AmberTools/src/configure2 index f1a3cff..4b07fa5 100755 --- a/AmberTools/src/configure2 +++ b/AmberTools/src/configure2 @@ -318,7 +318,7 @@ fi #------------------------------------------------------------------------------ # Define variables that are currently constants: #------------------------------------------------------------------------------ -bintraj='yes' +bintraj='no' ldout=' -o ' localcp='cp' localmv='mv' @@ -358,7 +358,7 @@ cygwin='no' debug='no' dragonegg='' fpp="cpp -traditional -P" -fppflags='' +fppflags='-DBINTRAJ' freeformat_flag='' fwarnflag='' g95='no' @@ -370,7 +370,7 @@ installtype='serial' intel_compiler_flag_mkl='no' intelmpi='no' is_mac='no' -ldflags='' +ldflags='GENTOO_LDFLAGS' ld='ld ' lfs='yes' lm='-lm' @@ -599,11 +599,11 @@ omp_flag= mpi_flag= lex=flex flibs_mkl= -lapack=install -blas=install +lapack=skip +blas=skip f2c=skip -ucpp=install -cpp="ucpp -l" +ucpp=skip +cpp="\$(EPREFIX)/usr/bin/ucpp -l" #----------------------------------- # skip building of xleap? @@ -907,7 +907,7 @@ gnu) flibs_arch="-lgfortran -w" flibsf_arch= cc=gcc - cflags="-fPIC" + cflags="-fPIC -DBINTRAJ" ambercflags="" cplusplus=g++ cxxflags="-fPIC" @@ -937,11 +937,11 @@ gnu) foptflags="" else cnooptflags= - coptflags="-O3" + coptflags="GENTOO_CFLAGS" cxxnooptflags= - cxxoptflags="-fPIC -O3" + cxxoptflags="-fPIC GENTOO_CXXFLAGS" fnooptflags="-O0" - foptflags="-O3" + foptflags="GENTOO_FFLAGS" fi # Debugging options @@ -957,11 +957,11 @@ gnu) if [ $sse = 'yes' ]; then if [ $x86_64 = 'yes' ]; then #-mfpmath=sse is default for x86_64, no need to specific it - coptflags="$coptflags -mtune=native" - foptflags="$foptflags -mtune=native" + coptflags="$coptflags" + foptflags="$foptflags" else # i386 needs to be told to use sse prior to using -mfpmath=sse - coptflags="$coptflags -mtune=native -msse -mfpmath=sse" - foptflags="$foptflags -mtune=native -msse -mfpmath=sse" + coptflags="$coptflags" + foptflags="$foptflags" fi fi fcreal8="-fdefault-real-8" @@ -1032,7 +1032,7 @@ gnu) # pmemd_fpp_flags='-DFFTW_FFT' # fi pmemd_foptflags="$foptflags" - pmemd_coptflags="$coptflags" + pmemd_coptflags="$coptflags -DBINTRAJ" if [ ! -z $dragonegg ]; then pmemd_foptflags="-fplugin=$dragonegg $fflags $pmemd_foptflags" pmemd_coptflags="-fplugin=$dragonegg $pmemd_coptflags" @@ -1062,7 +1062,7 @@ gnu) fi pmemd_cu_includes="$pmemd_cu_includes $mpi_inc" pmemd_cu_defines="$pmemd_cu_defines -DMPI -DMPICH_IGNORE_CXX_SEEK" - pmemd_coptflags="$coptflags -DMPICH_IGNORE_CXX_SEEK" + pmemd_coptflags="$coptflags -DMPICH_IGNORE_CXX_SEEK -DBINTRAJ" fi fi if [ "$cuda_SPFP" = 'yes' ]; then @@ -2649,40 +2649,40 @@ if [ "$has_fftw3" = 'yes' ]; then if [ "$sse" = "yes" ]; then enable_sse="--enable-sse2=yes" # --enable-avx=yes" fi - if [ "$mic" = 'yes' ]; then - echo " --configuring for mic (native mode)..." - echo - cd fftw-3.3 && \ - ./configure --prefix=$AMBERHOME --libdir=$AMBERHOME/lib \ - --enable-static --enable-shared --host=x86_64-k1om-linux \ - --build=x86_64-unknown-linux \ - $enable_mpi $mpicc $enable_debug \ - CC="$cc -mmic" CFLAGS="$cflags $coptflags " \ - F77="$fc -mmic" FFLAGS="$fflags $foptflags " \ - FLIBS="$flibs_arch" \ - > ../fftw3_config.log 2>&1 - ncerror=$? - else - cd fftw-3.3 && \ - ./configure --prefix=$AMBERHOME --libdir=$AMBERHOME/lib \ - --enable-static --enable-shared \ - $enable_mpi $mpicc $enable_debug $enable_sse\ - CC="$cc" CFLAGS="$cflags $coptflags" \ - F77="$fc" FFLAGS="$fflags $foptflags" \ - FLIBS="$flibs_arch" \ - > ../fftw3_config.log 2>&1 - ncerror=$? - fi - if [ $ncerror -gt 0 ]; then - echo "Error: FFTW configure returned $ncerror" - echo " FFTW configure failed! Check the fftw3_config.log file" - echo " in the $AMBERHOME/AmberTools/src directory." - exit 1 - else - echo " fftw-3.3 configure succeeded." - fi - cd .. - flibs_fftw3="-lfftw3" +# if [ "$mic" = 'yes' ]; then +# echo " --configuring for mic (native mode)..." +# echo +# cd fftw-3.3 && \ +# ./configure --prefix=$AMBERHOME --libdir=$AMBERHOME/lib \ +# --enable-static --enable-shared --host=x86_64-k1om-linux \ +# --build=x86_64-unknown-linux \ +# $enable_mpi $mpicc $enable_debug \ +# CC="$cc -mmic" CFLAGS="$cflags $coptflags " \ +# F77="$fc -mmic" FFLAGS="$fflags $foptflags " \ +# FLIBS="$flibs_arch" \ +# > ../fftw3_config.log 2>&1 +# ncerror=$? +# else +# cd fftw-3.3 && \ +# ./configure --prefix=$AMBERHOME --libdir=$AMBERHOME/lib \ +# --enable-static --enable-shared \ +# $enable_mpi $mpicc $enable_debug $enable_sse\ +# CC="$cc" CFLAGS="$cflags $coptflags" \ +# F77="$fc" FFLAGS="$fflags $foptflags" \ +# FLIBS="$flibs_arch" \ +# > ../fftw3_config.log 2>&1 +# ncerror=$? +# fi +# if [ $ncerror -gt 0 ]; then +# echo "Error: FFTW configure returned $ncerror" +# echo " FFTW configure failed! Check the fftw3_config.log file" +# echo " in the $AMBERHOME/AmberTools/src directory." +# exit 1 +# else +# echo " fftw-3.3 configure succeeded." +# fi +# cd .. + flibs_fftw3="GENTOO_FFTW3_LIBS" fftw3="\$(LIBDIR)/libfftw3.a" if [ "$mpi" = 'yes' -a "$intelmpi" = 'no' ]; then flibs_fftw3="-lfftw3_mpi $flibs_fftw3" @@ -2701,23 +2701,23 @@ elif [ "$mdgx" = 'yes' ]; then if [ "$sse" = "yes" ]; then enable_sse="--enable-sse2=yes" # --enable-avx=yes" fi - cd fftw-3.3 && \ - ./configure --prefix=$AMBERHOME --libdir=$AMBERHOME/lib \ - --enable-static --enable-shared --disable-fortran \ - $enable_debug $enable_sse\ - CC="$cc" CFLAGS="$cflags $coptflags" \ - > ../fftw3_config.log 2>&1 - ncerror=$? - if [ $ncerror -gt 0 ]; then - echo "Error: FFTW configure returned $ncerror" - echo " FFTW configure failed! Check the fftw3_config.log file" - echo " in the $AMBERHOME/AmberTools/src directory." - exit 1 - else - echo " fftw-3.3 configure succeeded." - fi - cd .. - flibs_fftw3="-lfftw3" +# cd fftw-3.3 && \ +# ./configure --prefix=$AMBERHOME --libdir=$AMBERHOME/lib \ +# --enable-static --enable-shared --disable-fortran \ +# $enable_debug $enable_sse\ +# CC="$cc" CFLAGS="$cflags $coptflags" \ +# > ../fftw3_config.log 2>&1 +# ncerror=$? +# if [ $ncerror -gt 0 ]; then +# echo "Error: FFTW configure returned $ncerror" +# echo " FFTW configure failed! Check the fftw3_config.log file" +# echo " in the $AMBERHOME/AmberTools/src directory." +# exit 1 +# else +# echo " fftw-3.3 configure succeeded." +# fi +# cd .. + flibs_fftw3="GENTOO_FFTW3_LIBS" fftw3="\$(LIBDIR)/libfftw3.a" else echo "" @@ -3162,7 +3162,7 @@ LDFLAGS=$ldflags \$(CUSTOMBUILDFLAGS) \$(AMBERBUILDFLAGS) AMBERLDFLAGS=\$(AMBERBUILDFLAGS) LEX= $lex -YACC= \$(BINDIR)/yacc +YACC= byacc AR= ar rv M4= $m4 RANLIB=$ranlib @@ -3198,7 +3198,7 @@ CP=$localcp # Information about Fortran compilation: FC=$fc -FFLAGS= $fflags \$(LOCALFLAGS) \$(CUSTOMBUILDFLAGS) -I\$(INCDIR) \$(NETCDFINC) $mklinc \$(AMBERBUILDFLAGS) +FFLAGS= $fflags \$(LOCALFLAGS) \$(CUSTOMBUILDFLAGS) -IGENTOO_INCLUDE \$(NETCDFINC) $mklinc \$(AMBERBUILDFLAGS) FNOOPTFLAGS= $fnooptflags FOPTFLAGS= $foptflags AMBERFFLAGS=\$(AMBERBUILDFLAGS) diff --git a/AmberTools/src/cpptraj/src/Makefile_at b/AmberTools/src/cpptraj/src/Makefile_at index 977439f..4bf25c8 100644 --- a/AmberTools/src/cpptraj/src/Makefile_at +++ b/AmberTools/src/cpptraj/src/Makefile_at @@ -10,7 +10,7 @@ CPPTRAJ_FLAGS= -I$(INCDIR) $(COPTFLAGS) $(CFLAGS) $(NETCDFINC) # NOTE: Since -nobintraj is possible and the dependency for netcdf is not # set correctly by configure there is no way this can work for netcdf READLINE_HOME=readline -READLINE=$(READLINE_HOME)/libreadline.a +READLINE=-lreadline EXTERNAL_LIBS=$(LIBDIR)/libarpack.a $(LIBDIR)/liblapack.a $(LIBDIR)/libblas.a $(READLINE) include cpptrajfiles @@ -45,7 +45,7 @@ depend: findDepend dependclean: /bin/rm -f FindDepend.o findDepend -cpptraj$(SFX): $(OBJECTS) pub_fft.o $(EXTERNAL_LIBS) +cpptraj$(SFX): $(OBJECTS) pub_fft.o $(CXX) $(WARNFLAGS) $(LDFLAGS) -o cpptraj$(SFX) $(OBJECTS) pub_fft.o \ -L$(LIBDIR) $(NETCDFLIB) $(ZLIB) $(BZLIB) $(FLIBS_PTRAJ) $(READLINE) @@ -53,12 +53,12 @@ ambpdb$(SFX): $(AMBPDB_OBJECTS) $(CXX) $(WARNFLAGS) $(LDFLAGS) -o ambpdb$(SFX) $(AMBPDB_OBJECTS) \ -L$(LIBDIR) $(NETCDFLIB) $(ZLIB) $(BZLIB) -cpptraj.sander$(SFX): $(OBJECTS) pub_fft.o $(EXTERNAL_LIBS) $(LIBDIR)/libsander.so +cpptraj.sander$(SFX): $(OBJECTS) pub_fft.o $(LIBDIR)/libsander.so $(CXX) $(WARNFLAGS) $(LDFLAGS) -o cpptraj.sander$(SFX) $(OBJECTS) pub_fft.o \ -L$(LIBDIR) $(NETCDFLIB) $(ZLIB) $(BZLIB) $(FLIBS_PTRAJ) $(READLINE) \ -lsander -libcpptraj$(SHARED_SUFFIX): $(OBJECTS) pub_fft.o $(EXTERNAL_LIBS) +libcpptraj$(SHARED_SUFFIX): $(OBJECTS) pub_fft.o $(CXX) $(MAKE_SHARED) $(WARNFLAGS) $(LDFLAGS) -o $@ $(OBJECTS) pub_fft.o \ -L$(LIBDIR) $(NETCDFLIB) $(ZLIB) $(BZLIB) $(FLIBS_PTRAJ) $(READLINE) diff --git a/AmberTools/src/gbnsr6/Makefile b/AmberTools/src/gbnsr6/Makefile index 0d704cb..85042d4 100644 --- a/AmberTools/src/gbnsr6/Makefile +++ b/AmberTools/src/gbnsr6/Makefile @@ -66,7 +66,7 @@ configured_serial: configured ) #--------------------------------------------------------------------------- -gbnsr6$(SFX): $(OBJ) syslib netlib c9x-complex configured_serial +gbnsr6$(SFX): $(OBJ) syslib configured_serial $(FC) $(PBSAFLAG) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o gbnsr6$(SFX) $(OBJ) \ ../lib/nxtsec.o ../lib/random.o \ -L$(LIBDIR) $(FLIBSF) $(LDFLAGS) $(AMBERLDFLAGS) diff --git a/AmberTools/src/mdgx/Makefile b/AmberTools/src/mdgx/Makefile index 5751142..04e8e1c 100644 --- a/AmberTools/src/mdgx/Makefile +++ b/AmberTools/src/mdgx/Makefile @@ -151,7 +151,7 @@ MDGX_HEADERS = \ ptrajmask.h \ AmberNetcdf.h -$(BINDIR)/mdgx$(SFX) : $(FFTW3) $(MDGX_OBJS) +$(BINDIR)/mdgx$(SFX) : $(MDGX_OBJS) $(CC) $(COPTFLAGS) $(CFLAGS) $(AMBERCFLAGS) $(LDFLAGS) \ -o $@ $(MDGX_OBJS) -L$(LIBDIR) $(FLIBS_FFTW3) $(NETCDFLIB) $(LM) @@ -159,7 +159,7 @@ $(BINDIR)/mdgx.MPI$(SFX) : $(MDGX_OBJS) $(CC) $(COPTFLAGS) $(CFLAGS) $(AMBERCFLAGS) $(LDFLAGS) \ -o $@ $(MDGX_OBJS) -L$(LIBDIR) $(FLIBSF) $(FLIBS_FFTW3) $(NETCDFLIB) $(LM) -$(LIBDIR)/libmdgx$(SHARED_SUFFIX): $(MDGX_OBJS) $(MDGXWRAP_OBJS) $(BINDIR)/ucpp +$(LIBDIR)/libmdgx$(SHARED_SUFFIX): $(MDGX_OBJS) $(MDGXWRAP_OBJS) $(CC) $(MAKE_SHARED) -o $@ $(CFLAGS) $(COPTFLAGS) -L$(LIBDIR) $(FLIBSF) \ $(FLIBS_FFTW3) $(NETCDFLIB) $(LM) $(MDGX_OBJS) $(MDGXWRAP_OBJS) cp -p mdgxapi.h $(INCDIR)/mdgx.h diff --git a/AmberTools/src/nab/nab.c b/AmberTools/src/nab/nab.c index 2e90068..cf83aaa 100644 --- a/AmberTools/src/nab/nab.c +++ b/AmberTools/src/nab/nab.c @@ -161,8 +161,8 @@ char *cppstring; fprintf( stderr, "AMBERHOME is not set!\n" ); exit(1); } - sprintf( cmd, "%s/bin/%s %s -I%s/include %s ", - amberhome, CPP, cppstring, amberhome, + sprintf( cmd, "%s %s -I%s/include %s ", + CPP, cppstring, amberhome, argv[ ac ] ? argv[ ac ] : "" ); if( cgdopt ) fprintf( stderr, "cpp cmd: %s\n", cmd ); nfields = split( cmd, fields, " " ); diff --git a/AmberTools/src/nmode/Makefile b/AmberTools/src/nmode/Makefile index 12acf35..4f26593 100644 --- a/AmberTools/src/nmode/Makefile +++ b/AmberTools/src/nmode/Makefile @@ -87,12 +87,12 @@ LIBOBJ= ../lib/rfree.o ../lib/matinv.o ../lib/nxtsec.o \ LIBOBJNOPATH= rfree.o matinv.o nxtsec.o \ amopen.o rgroup.o -$(BINDIR)/nmode$(SFX): $(OBJ) libobj syslib netlib +$(BINDIR)/nmode$(SFX): $(OBJ) libobj syslib $(FC) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $(BINDIR)/nmode$(SFX) \ $(OBJ) $(LIBOBJ) \ ../lib/sys.a -L$(LIBDIR) $(FLIBSF) $(LDFLAGS) $(AMBERLDFLAGS) -nmanal$(SFX): $(OBJ1) libobj netlib binpos.o +nmanal$(SFX): $(OBJ1) libobj binpos.o $(FC) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o nmanal$(SFX) \ $(OBJ1) $(LIBOBJ) binpos.o \ -L$(LIBDIR) $(FLIBSF) $(LDFLAGS) $(AMBERLDFLAGS) @@ -103,7 +103,7 @@ lmanal$(SFX): $(OBJ2) libobj binpos.o -L$(LIBDIR) $(FLIBSF) $(LDFLAGS) $(AMBERLDFLAGS) quasih$(SFX): quasih.o fileio.o thermo.o mexit.o \ - syslib netlib libobj binpos.o + syslib libobj binpos.o $(FC) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o quasih$(SFX) \ quasih.o fileio.o thermo.o mexit.o \ $(LIBOBJ) binpos.o ../lib/sys.a -L$(LIBDIR) $(FLIBSF) \ diff --git a/AmberTools/src/parmed/chemistry/unit/unit.py b/AmberTools/src/parmed/chemistry/unit/unit.py index 7767f39..a8d8a47 100644 --- a/AmberTools/src/parmed/chemistry/unit/unit.py +++ b/AmberTools/src/parmed/chemistry/unit/unit.py @@ -612,7 +612,7 @@ class UnitSystem(object): to_base_units[m][n] = power try: self.from_base_units = ~to_base_units - except ArithmeticError, e: + except ArithmeticError as e: raise ArithmeticError("UnitSystem is not a valid basis set. " + str(e)) def __iter__(self): diff --git a/AmberTools/src/pbsa/Makefile b/AmberTools/src/pbsa/Makefile index 1b2c09a..6dc65a6 100644 --- a/AmberTools/src/pbsa/Makefile +++ b/AmberTools/src/pbsa/Makefile @@ -148,23 +148,23 @@ configured_parallel: configured ) #--------------------------------------------------------------------------- -pbsa$(SFX): FFTW3 $(OBJ) syslib netlib c9x-complex configured_serial +pbsa$(SFX): $(OBJ) syslib configured_serial $(FC) $(PBSAFLAG) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o pbsa$(SFX) $(OBJ) \ ../lib/nxtsec.o ../lib/random.o $(FLIBS_FFTW3) \ -L$(LIBDIR) $(FLIBSF) $(LDFLAGS) $(AMBERLDFLAGS) -pbsa.MPI$(SFX): FFTW3.MPI $(OBJ) syslib netlib c9x-complex configured_parallel +pbsa.MPI$(SFX): $(OBJ) syslib configured_parallel $(FC) $(PBSAFLAG) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o pbsa.MPI$(SFX) $(OBJ) \ ../lib/nxtsec.o ../lib/random.o $(FLIBS_FFTW3) \ -L$(LIBDIR) $(FLIBSF) $(LDFLAGS) $(AMBERLDFLAGS) -simplepbsa$(SFX): simplepbsa.o gopt.o libpbsa.a sfflib syslib netlib c9x-complex +simplepbsa$(SFX): simplepbsa.o gopt.o libpbsa.a sfflib syslib $(FC) $(PBSAFLAG) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o simplepbsa$(SFX) simplepbsa.o gopt.o \ libpbsa.a $(LIBDIR)/libsff.a ../lib/nxtsec.o -L$(LIBDIR) $(FLIBSF) \ $(LDFLAGS) $(AMBERLDFLAGS) /bin/mv simplepbsa$(SFX) $(BINDIR) -libpbsa.a: FFTW3 $(LIBPBSAOBJS) syslib +libpbsa.a: $(LIBPBSAOBJS) syslib -rm -f libpbsa.a $(AR) libpbsa.a $(LIBPBSAOBJS) ../lib/random.o $(RANLIB) libpbsa.a diff --git a/AmberTools/src/ptraj/Makefile b/AmberTools/src/ptraj/Makefile index df789e8..48227d5 100644 --- a/AmberTools/src/ptraj/Makefile +++ b/AmberTools/src/ptraj/Makefile @@ -61,17 +61,16 @@ rdparm$(SFX): libs $(OBJECTS) $(CC) $(CFLAGS) $(AMBERCFLAGS) $(LDFLAGS) $(AMBERLDFLAGS) \ -o rdparm$(SFX) $(OBJECTS) $(LIBS) $(NETCDFLIB) $(LM) -ptraj$(SFX): libs netlib $(OBJECTS) +ptraj$(SFX): libs $(OBJECTS) $(CC) $(CFLAGS) $(AMBERCFLAGS) $(LDFLAGS) $(AMBERLDFLAGS) \ -o ptraj$(SFX) $(OBJECTS) $(LIBS) $(NETCDFLIB) $(LM) -ptraj.MPI$(SFX): libs netlib $(OBJECTS) +ptraj.MPI$(SFX): libs $(OBJECTS) $(CC) $(CFLAGS) $(AMBERCFLAGS) $(LDFLAGS) $(AMBERLDFLAGS) \ -o ptraj.MPI$(SFX) $(OBJECTS) $(LIBS) $(PNETCDFLIB) $(LM) libs: cd pdb && $(MAKE) - cd ../arpack && $(MAKE) netlib: cd ../lapack && $(MAKE) $(LAPACK) diff --git a/AmberTools/src/sander/Makefile b/AmberTools/src/sander/Makefile index 9b9488c..67fe45a 100644 --- a/AmberTools/src/sander/Makefile +++ b/AmberTools/src/sander/Makefile @@ -90,7 +90,7 @@ APBSOBJ= \ file_io_dat.APBS.o apbs_vars.APBS.o apbs.APBS.o \ constants.o state.o memory_module.o stack.o \ nose_hoover.o nose_hoover_init.o \ - trace.o rmsgrd.o lmod.o rand2.o lmodC.o xminC.o decomp.o \ + trace.o rmsgrd.o lmod.o rand2.o dsarpack.o lmodC.o xminC.o decomp.o \ icosasurf.o egb.o remd.o findmask.o \ relax_mat.o nmr.o multitmd.o \ multisander.o sander.APBS.o trajene.o cshf.o nmrcal.o mtmdcall.o pearsn.o \ @@ -138,7 +138,7 @@ SEBOMDLIB = ../sebomd/sebomd.a MMOBJ= file_io_dat.o constants.o state.o memory_module.o stack.o \ nose_hoover.o nose_hoover_init.o \ - trace.o rmsgrd.o lmod.o rand2.o lmodC.o xminC.o decomp.o \ + trace.o rmsgrd.o lmod.o rand2.o dsarpack.o lmodC.o xminC.o decomp.o \ icosasurf.o egb.o remd.o findmask.o \ relax_mat.o nmr.o multitmd.o \ multisander.o sander.o trajene.o cshf.o nmrcal.o mtmdcall.o pearsn.o \ @@ -159,7 +159,7 @@ MMOBJ= file_io_dat.o constants.o state.o memory_module.o stack.o \ APIOBJ= file_io_dat.o constants.o state.o memory_module.o stack.o \ nose_hoover.o nose_hoover_init.o \ - trace.o rmsgrd.o lmod.o rand2.o lmodC.o xminC.o decomp.o \ + trace.o rmsgrd.o lmod.o rand2.o dsarpack.o lmodC.o xminC.o decomp.o \ icosasurf.o egb.o remd.o findmask.o \ relax_mat.o nmr.o multitmd.o \ trajene.o cshf.o nmrcal.o mtmdcall.o pearsn.o \ @@ -180,7 +180,7 @@ APIOBJ= file_io_dat.o constants.o state.o memory_module.o stack.o \ LESAPIOBJ= memory_module.o stack.o file_io_dat.o les.o \ constants.o state.o nose_hoover.o nose_hoover_init_LES.o \ - trace.o rmsgrd.o rand2.o lmodC.o xminC.o decomp.o icosasurf.o \ + trace.o rmsgrd.o rand2.o dsarpack.o lmodC.o xminC.o decomp.o icosasurf.o \ egb.LES.o remd.LES.o findmask.o relax_mat.o nmr.LES.o multitmd.o \ cshf.o nmrcal.o mtmdcall.o pearsn.o cpparm.LES.o \ printe.o runmin.o nonbond_list.LESAPI.o force.LES.o rdparm.LESAPI.o \ @@ -209,7 +209,7 @@ PARTPIMDOBJ = pimd_vars.o pimd_force.LES.o pimd_init.LES.o cmd_vars.o cmd_matrix PUPILOBJ= file_io_dat.o constants.o state.o memory_module.o stack.o \ nose_hoover.o nose_hoover_init.o \ - trace.o rmsgrd.o lmod.o rand2.o lmodC.o xminC.o decomp.o \ + trace.o rmsgrd.o lmod.o rand2.o dsarpack.o lmodC.o xminC.o decomp.o \ pupildata.o icosasurf.o egb.o findmask.o \ relax_mat.o nmr.o multitmd.o \ multisander.o sander.PUPIL.o trajene.o cshf.o nmrcal.o mtmdcall.o pearsn.o \ @@ -233,7 +233,7 @@ LSCIVROBJ = lscivr_vars.o lsc_init.o lsc_xp.o LESOBJ= memory_module.o stack.o file_io_dat.o \ constants.o state.o nose_hoover.o nose_hoover_init_LES.o \ - trace.o rmsgrd.o rand2.o lmodC.o xminC.o decomp.o icosasurf.o \ + trace.o rmsgrd.o rand2.o dsarpack.o lmodC.o xminC.o decomp.o icosasurf.o \ egb.LES.o remd.LES.o findmask.o \ relax_mat.o nmr.LES.o multitmd.o \ multisander.LES.o sander.LES.o cshf.o nmrcal.o mtmdcall.o pearsn.o \ @@ -293,7 +293,7 @@ all_serial_programs: $(SERIALPROGS) $(BINDIR)/sander$(SFX): libsqm $(MMOBJ) $(QMOBJ) $(FULLPIMDOBJ) $(EMIL) \ $(SEBOMDOBJ) sebomd \ $(LSCIVROBJ) force.o syslib \ - ../lib/nxtsec.o netlib configured_serial \ + ../lib/nxtsec.o configured_serial \ $(NCSU_OBJECTS) $(XRAY_OBJS) libpbsa librism $(PLUMED_DEPENDENCIES) $(FC) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ $(MMOBJ) $(QMOBJ) $(SEBOMDOBJ) \ $(FULLPIMDOBJ) $(LSCIVROBJ) force.o -L$(LIBDIR) -lsqm \ @@ -308,7 +308,7 @@ $(BINDIR)/sander$(SFX): libsqm $(MMOBJ) $(QMOBJ) $(FULLPIMDOBJ) $(EMIL) \ $(BINDIR)/sander.MPI$(SFX): libsqm $(MMOBJ) $(QMOBJ) $(FULLPIMDOBJ) $(EMIL) \ $(LSCIVROBJ) $(EVBOBJ) force.o \ $(SEBOMDOBJ) sebomd $(XRAY_OBJS) \ - syslib ../lib/nxtsec.o netlib libpbsa librism_mpi configured_parallel $(NCSU_OBJECTS) \ + syslib ../lib/nxtsec.o libpbsa librism_mpi configured_parallel $(NCSU_OBJECTS) \ $(PLUMED_DEPENDENCIES) $(FC) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ $(MMOBJ) $(QMOBJ) $(SEBOMDOBJ) \ $(FULLPIMDOBJ) $(LSCIVROBJ) $(EVBOBJ) force.o \ @@ -323,7 +323,7 @@ $(BINDIR)/sander.MPI$(SFX): libsqm $(MMOBJ) $(QMOBJ) $(FULLPIMDOBJ) $(EMIL) \ $(BINDIR)/sander.PUPIL$(SFX): libsqm $(PUPILOBJ) $(QMOBJ) $(FULLPIMDOBJ) $(EMIL) \ $(LSCIVROBJ) syslib $(XRAY_OBJS) \ $(SEBOMDOBJ) sebomd \ - ../lib/nxtsec.o netlib libpbsa librism configured_serial $(NCSU_OBJECTS) \ + ../lib/nxtsec.o libpbsa librism configured_serial $(NCSU_OBJECTS) \ $(PLUMED_DEPENDENCIES) $(FC) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ $(PUPILOBJ) $(QMOBJ) $(SEBOMDOBJ) $(FULLPIMDOBJ) \ $(LSCIVROBJ) -L$(LIBDIR) -lsqm -lFpbsa \ @@ -335,7 +335,7 @@ $(BINDIR)/sander.PUPIL$(SFX): libsqm $(PUPILOBJ) $(QMOBJ) $(FULLPIMDOBJ) $(EMIL) #--------------------------------------------------------------------------- $(BINDIR)/sander.LES$(SFX): libsqm $(LESOBJ) $(PARTPIMDOBJ) syslib \ - ../lib/nxtsec.o netlib \ + ../lib/nxtsec.o \ $(LSCIVROBJ) $(NCSU_OBJECTS) $(XRAY_OBJS) configured_serial \ libpbsa librism $(EMIL) sebomd $(PLUMED_DEPENDENCIES) $(FC) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ $(LESOBJ) $(PARTPIMDOBJ) $(LSCIVROBJ) \ @@ -348,7 +348,7 @@ $(BINDIR)/sander.LES$(SFX): libsqm $(LESOBJ) $(PARTPIMDOBJ) syslib \ #--------------------------------------------------------------------------- $(BINDIR)/sander.LES.MPI$(SFX): libsqm $(LESOBJ) $(EVBPIMD) \ $(PARTPIMDOBJ) syslib ../lib/nxtsec.o \ - netlib libpbsa librism_mpi $(EMIL) $(XRAY_OBJS) \ + libpbsa librism_mpi $(EMIL) $(XRAY_OBJS) \ $(LSCIVROBJ) $(NCSU_OBJECTS) sebomd configured_parallel $(PLUMED_DEPENDENCIES) $(FC) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ $(LESOBJ) $(EVBPIMD) \ $(PARTPIMDOBJ) $(LSCIVROBJ) $(XRAY_OBJS) \ @@ -363,7 +363,7 @@ $(BINDIR)/sander.APBS$(SFX): libsqm $(APBSOBJ) $(QMOBJ) \ $(LSCIVROBJ) $(FULLPIMDOBJ) $(NCSU_OBJECTS) \ force.APBS.o syslib librism $(EMIL) \ $(SEBOMDOBJ) sebomd $(XRAY_OBJS) \ - ../lib/nxtsec.o netlib configured_serial $(PLUMED_DEPENDENCIES) + ../lib/nxtsec.o configured_serial $(PLUMED_DEPENDENCIES) $(FC) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ $(APBSOBJ) $(QMOBJ) $(SEBOMDOBJ) \ $(FULLPIMDOBJ) $(LSCIVROBJ) force.APBS.o \ -L$(APBS_LIBDIR) $(APBS_LIBS) \ @@ -386,7 +386,7 @@ $(BINDIR)/ambmask$(SFX): ambmask.o findmask.o amopen.o parms.o \ $(LIBDIR)/libsander$(SHARED_SUFFIX): libsqm $(APIOBJ) $(QMAPIOBJ) $(FULLPIMDOBJ) $(EMIL) \ $(SEBOMDOBJ) sebomd $(INCDIR)/sander_api.mod \ $(LSCIVROBJ) force.o syslib $(PLUMED_DEPENDENCIES) \ - ../lib/nxtsec.o netlib configured_serial \ + ../lib/nxtsec.o configured_serial \ $(NCSU_OBJECTS) $(XRAY_OBJS) libpbsa librism $(FC) $(MAKE_SHARED) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ $(APIOBJ) \ $(QMAPIOBJ) $(SEBOMDOBJ) $(FULLPIMDOBJ) $(LSCIVROBJ) force.o \ @@ -399,7 +399,7 @@ $(LIBDIR)/libsander$(SHARED_SUFFIX): libsqm $(APIOBJ) $(QMAPIOBJ) $(FULLPIMDOBJ) $(LIOLIBS) $(PLUMED_LOAD) $(LIBDIR)/libsanderles$(SHARED_SUFFIX): libsqm $(LESAPIOBJ) $(PARTPIMDOBJ) $(QMAPIOBJ) syslib \ - ../lib/nxtsec.o netlib $(INCDIR)/sanderles_api.mod \ + ../lib/nxtsec.o $(INCDIR)/sanderles_api.mod \ $(LSCIVROBJ) $(NCSU_OBJECTS) $(XRAY_OBJS) configured_serial \ libpbsa librism $(EMIL) sebomd $(PLUMED_DEPENDENCIES) $(FC) $(MAKE_SHARED) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) \ @@ -452,6 +452,10 @@ rand2.o: ../sff/rand2.c $(CC) -c $(CNOOPTFLAGS) $(CFLAGS) $(AMBERCFLAGS) \ -o rand2.o ../sff/rand2.c +dsarpack.o: ../sff/dsarpack.f + $(CC) -c -DSQM $(CNOOPTFLAGS) $(CFLAGS) $(AMBERCFLAGS) \ + -o dsarpack.o ../sff/dsarpack.f + lmodC.o: ../sff/lmodC.c $(CC) -c -DSQM $(CNOOPTFLAGS) $(CFLAGS) $(AMBERCFLAGS) \ -o lmodC.o ../sff/lmodC.c diff --git a/AmberTools/src/sander/depend b/AmberTools/src/sander/depend index 67cc33b..b8667d7 100644 --- a/AmberTools/src/sander/depend +++ b/AmberTools/src/sander/depend @@ -5774,7 +5774,7 @@ yammpnb.o: \ yammpnb.o: yammpnb.F90 $(FC) $(FWARNFLAGS) $(FPPFLAGS) -c $(FOPTFLAGS) $(FFLAGS) $(AMBERFFLAGS) $(RISMSANDER) -o $@ yammpnb.F90 -netcdf.o: $(NETCDF) +netcdf.o: test -e $@ || touch netcdf.o AmberNetcdf.o: ../lib/AmberNetcdf.F90 diff --git a/AmberTools/src/sander/makedepend b/AmberTools/src/sander/makedepend index 05c04c4..a18d979 100755 --- a/AmberTools/src/sander/makedepend +++ b/AmberTools/src/sander/makedepend @@ -232,7 +232,7 @@ foreach $file ( <*.F90> ){ } # special "compilation rule" for netcdf.o -printf "netcdf.o: \$(NETCDF)\n\ttest -e \$\@ || touch netcdf.o\n\n"; +printf "netcdf.o:\n\ttest -e \$\@ || touch netcdf.o\n\n"; # special compilation rule for AmberNetcdf.o, random.o, and constants.o printf "AmberNetcdf.o: ../lib/AmberNetcdf.F90\n"; diff --git a/AmberTools/src/sander/sander.h b/AmberTools/src/sander/sander.h index e4ca7e3..23cb216 100644 --- a/AmberTools/src/sander/sander.h +++ b/AmberTools/src/sander/sander.h @@ -47,7 +47,7 @@ // Workaround for strange behavior of clang compiler -- clang C doesn't seem to // like the inline specifier on any of these functions, but clang++ handles it // just fine. -#if defined(__cplusplus) || !defined(__clang__) +#if defined(__cplusplus) # define INLINE inline #else # define INLINE diff --git a/AmberTools/src/sff/Makefile b/AmberTools/src/sff/Makefile index 228625a..88d5531 100644 --- a/AmberTools/src/sff/Makefile +++ b/AmberTools/src/sff/Makefile @@ -3,7 +3,7 @@ include ../config.h .c.o: $(CC) -c -Dflex $(COPTFLAGS) $(CFLAGS) $(AMBERCFLAGS) $(RISMSFF) $(NETCDFINC) -o $@ $< -OBJS = binpos.o conjgrad.o lmodC.o memutil.o nblist.o newton.o nmode.o \ +OBJS = binpos.o conjgrad.o dsarpack.o lmodC.o memutil.o nblist.o newton.o nmode.o \ prm.o rand2.o sasad.o sff.o time.o xminC.o AmberNetcdf.o atomic_number.o $(SFF_RISM_INTERFACE) @@ -65,7 +65,7 @@ xminC.o: sff.h AmberNetcdf.o: AmberNetcdf.h hcp_getpdb: hcp_getpdb.c - $(CC) -o $(BINDIR)/hcp_getpdb hcp_getpdb.c + $(CC) $(CFLAGS) $(LDFLAGS) -o $(BINDIR)/hcp_getpdb hcp_getpdb.c .PHONY: ../rism/amber_rism_interface.NAB.o ../rism/amber_rism_interface.NAB.o: diff --git a/AmberTools/src/sff/dsarpack.f b/AmberTools/src/sff/dsarpack.f new file mode 100644 index 0000000..5544df9 --- /dev/null +++ b/AmberTools/src/sff/dsarpack.f @@ -0,0 +1,654 @@ + subroutine dsarpack(n_dim,n_eig_in,n_eig_out,ncv_in,itr_in, + & eigval_tol,eigvals,eigvecs,spectrum, + & need_eigvecs,ierr,debug_arpack, + & v,workl,workd,d,resid,ax,select, + & xyz,grad,return_flag,label) +c + implicit none +c +c %-----------------% +c | Dummy Arguments | +c %-----------------% +c + integer n_dim,n_eig_in,n_eig_out,ncv_in,itr_in,spectrum, + & need_eigvecs,ierr,debug_arpack,return_flag,label + Double precision eigval_tol + Double precision eigvals(n_eig_in),eigvecs(n_dim * n_eig_in) + Double precision v(n_dim,ncv_in), + & workl(ncv_in*(ncv_in+8)),workd(3*n_dim), + & d(ncv_in,2),resid(n_dim),ax(n_dim), + & xyz(n_dim),grad(n_dim) + logical select(ncv_in) +c + save +c +c %---------------% +c | Include Files | +c %---------------% +c +c include 'debug.h' +c +c\SCCS Information: @(#) +c FILE: debug.h SID: 2.3 DATE OF SID: 11/16/95 RELEASE: 2 +c +c %---------------------------------% +c | See debug.doc for documentation | +c %---------------------------------% + integer logfil, ndigit, mgetv0, + & msaupd, msaup2, msaitr, mseigt, msapps, msgets, mseupd, + & mnaupd, mnaup2, mnaitr, mneigh, mnapps, mngets, mneupd, + & mcaupd, mcaup2, mcaitr, mceigh, mcapps, mcgets, mceupd + common /debug/ + & logfil, ndigit, mgetv0, + & msaupd, msaup2, msaitr, mseigt, msapps, msgets, mseupd, + & mnaupd, mnaup2, mnaitr, mneigh, mnapps, mngets, mneupd, + & mcaupd, mcaup2, mcaitr, mceigh, mcapps, mcgets, mceupd +c +c This code shows how to use ARPACK to find a few eigenvalues +c (lambda) and corresponding eigenvectors (x) for the standard +c eigenvalue problem: +c +c A*x = lambda*x +c +c where A is an n by n real symmetric matrix. +c +c The main points illustrated here are +c +c 1) How to declare sufficient memory to find NEV +c eigenvalues of largest magnitude. Other options +c are available. +c +c 2) Illustration of the reverse communication interface +c needed to utilize the top level ARPACK routine DSAUPD +c that computes the quantities needed to construct +c the desired eigenvalues and eigenvectors(if requested). +c +c 3) How to extract the desired eigenvalues and eigenvectors +c using the ARPACK routine DSEUPD. +c +c The only thing that must be supplied in order to use this +c routine on your problem is to change the array dimensions +c appropriately, to specify WHICH eigenvalues you want to compute +c and to supply a matrix-vector product +c +c w <- Av +c +c in place of the call to AV( ) below. +c +c Once usage of this routine is understood, you may wish to explore +c the other available options to improve convergence, to solve generalized +c problems, etc. Look at the file ex-sym.doc in DOCUMENTS directory. +c This codes implements +c +c\Example-1 +c ... Suppose we want to solve A*x = lambda*x in regular mode, +c where A is derived from the central difference discretization +c of the 2-dimensional Laplacian on the unit square with +c zero Dirichlet boundary condition. +c ... OP = A and B = I. +c ... Assume "call av (n,x,y)" computes y = A*x +c ... Use mode 1 of DSAUPD. +c +c\BeginLib +c +c\Routines called: +c dsaupd ARPACK reverse communication interface routine. +c dseupd ARPACK routine that returns Ritz values and (optionally) +c Ritz vectors. +c dnrm2 Level 1 BLAS that computes the norm of a vector. +c daxpy Level 1 BLAS that computes y <- alpha*x+y. +c +c\Author +c Richard Lehoucq +c Danny Sorensen +c Chao Yang +c Dept. of Computational & +c Applied Mathematics +c Rice University +c Houston, Texas +c +c\SCCS Information: %Z% +c FILE: %M% SID: %I% DATE OF SID: %G% RELEASE: %R% +c +c\Remarks +c 1. None +c +c\EndLib +c +c----------------------------------------------------------------------- +c +c %-------------------------------------------------------% +c | Storage Declarations: | +c | | +c | The maximum dimensions for all arrays are | +c | set here to accommodate a problem size of | +c | N .le. MAXN | +c | | +c | NEV is the number of eigenvalues requested. | +c | See specifications for ARPACK usage below. | +c | | +c | NCV is the largest number of basis vectors that will | +c | be used in the Implicitly Restarted Arnoldi | +c | Process. Work per major iteration is | +c | proportional to N*NCV*NCV. | +c | | +c | You must set: | +c | | +c | MAXN: Maximum dimension of the A allowed. (dynamic) | +c | MAXNEV: Maximum NEV allowed. (dynamic) | +c | MAXNCV: Maximum NCV allowed. (dynamic) | +c %-------------------------------------------------------% +c +C %--------------------------------------% +C | F90 Allocatable Arrays (on the heap) | +C %--------------------------------------% +c +C Double precision,allocatable,save :: v(:,:) +C integer,save :: v_row_allocated = 0, v_col_allocated = 0 +c +c %----------------------------------------------% +c | Originally, as F77 parameters, the following | +c | integers were used to dimension work arrays. | +c | They are replaced by dummy arguments used to | +c | dimension the work arrays as F90 automatic | +c | arrays, but the integers are still used for | +c | passing the dimensions to lower level ARPACK | +c | routines dsaupd, dseupd and dmout. | +c %----------------------------------------------% +c + integer maxn, maxnev, maxncv, ldv +c +c %-------------------------------------------% +c | Local F90 Automatic Arrays (on the stack) | +c %-------------------------------------------% +c + Double precision +C & workl(ncv_in*(ncv_in+8)), +C & workd(3*n_dim), d(ncv_in,2), resid(n_dim), +C & ax(n_dim), + & cg_dstat(4) +C logical select(ncv_in) + integer iparam(11), ipntr(11), + & cg_istat(4) +c +c %---------------% +c | Local Scalars | +c %---------------% +c + character bmat*1, which*2 + integer ido, n, nev, ncv, lworkl, info, + & i, j, nx, ishfts, maxitr, mode1, nconv + integer L12, L18, ARPACK_ERROR, status_flag + data L12, L18, ARPACK_ERROR /1, 2, -2/ +C integer v_row_needed, v_col_needed + logical rvec + Double precision + & tol, sigma +c +c %------------% +c | Parameters | +c %------------% +c + Double precision + & zero + parameter (zero = 0.0D+0) +c +c %-----------------------------% +c | BLAS & LAPACK routines used | +c %-----------------------------% +c + Double precision + & dnrm2 + external dnrm2, daxpy, hessvec +c +c %--------------------% +c | Intrinsic function | +c %--------------------% +c + intrinsic abs +c +c %-----------------------% +c | Executable Statements | +c %-----------------------% +c + if ( label.eq.0 ) go to 1 + go to (12,18) label + 1 continue +c +c %------------------------------------------------% +c | Values used to calculate work array dimensions | +c %------------------------------------------------% +c + maxn = n_dim + maxnev = n_eig_in + maxncv = ncv_in + ldv = maxn +c +c %---------------------------------------------------% +c | The include debug.h statement above and | +c | assignments here initiate trace output from the | +c | internal actions of ARPACK. See debug.doc in the | +c | DOCUMENTS directory for usage. Initially, the | +c | most useful information will be a breakdown of | +c | time spent in the various stages of computation | +c | given by setting msaupd = 1. | +c %---------------------------------------------------% +c + ndigit = -5 + logfil = 6 + msgets = 0 + msaitr = 0 + msapps = 0 + if ( debug_arpack.eq.1 ) then + msaupd = 1 + else + msaupd = 0 + endif + msaup2 = 0 + mseigt = 0 + mseupd = 0 +c +c *** Allocatable array v will be allowed to grow to its largest size; +c *** it is never deallocated: +C v_row_needed = n_dim !!! ldv +C v_col_needed = ncv_in !!! maxncv +C if( allocated(v) )then +C if( (v_row_needed .gt. v_row_allocated) +C & .or. (v_col_needed .gt. v_col_allocated) )then +C deallocate(v,stat=ierr) +C if( ierr .ne. 0 )then +C write( logfil, '(a,i16,1x,i8)' ) +C & 'ARPACK: could not deallocate v' +C go to 9000 +C endif +C endif +C endif +C if( .not. allocated(v) )then +C allocate( v(v_row_needed,v_col_needed), stat=ierr ) +C if( ierr .ne. 0 )then +C write( logfil, '(a,2i10)' ) +C & 'ARPACK: could not allocate v' +C go to 9000 +C endif +C v_row_allocated = v_row_needed +C v_col_allocated = v_col_needed +C endif +C v = zero !!! zero out entire v array +c +c %-------------------------------------------------% +c | The following sets dimensions for this problem. | +c %-------------------------------------------------% +c + n = n_dim +c +c %----------------------------------------------% +c | | +c | Specifications for ARPACK usage are set | +c | below: | +c | | +c | 1) NEV = N_EIG_IN asks for N_EIG_IN | +c | eigenvalues to be computed. | +c | | +c | 2) NCV = NCV_IN sets the length of the | +c | Arnoldi factorization | +c | | +c | 3) This is a standard problem | +c | (indicated by bmat = 'I') | +c | | +c | 4) Ask for the NEV eigenvalues of | +c | smallest magnitude | +c | (indicated by which = 'SM') | +c | See documentation in SSAUPD for the | +c | other options SA, LA, LM, BE. | +c | | +c | Note: NEV and NCV must satisfy the following | +c | conditions: | +c | NEV <= MAXNEV | +c | NEV + 1 <= NCV <= MAXNCV | +c %----------------------------------------------% +c + nev = n_eig_in + ncv = ncv_in + bmat = 'I' + if ( spectrum .eq. 1 ) then + which = 'SM' + else if ( spectrum .eq. 2 ) then + which = 'SA' + else if ( spectrum .eq. 3 ) then + which = 'LM' + else if ( spectrum .eq. 4 ) then + which = 'LA' + else if ( spectrum .eq. 5 ) then + which = 'BE' + else + print *, ' ERROR with _SSIMP: Spectrum .NE. (SM|SA|LA|LM|BE)' + go to 9000 + end if +c + if ( n .gt. maxn ) then + print *, ' ERROR with _SSIMP: N is greater than MAXN ' + go to 9000 + else if ( nev .gt. maxnev ) then + print *, ' ERROR with _SSIMP: NEV is greater than MAXNEV ' + go to 9000 + else if ( ncv .gt. maxncv ) then + print *, ' ERROR with _SSIMP: NCV is greater than MAXNCV ' + go to 9000 + end if +c +c %-----------------------------------------------------% +c | | +c | Specification of stopping rules and initial | +c | conditions before calling DSAUPD | +c | | +c | TOL determines the stopping criterion. | +c | | +c | Expect | +c | abs(lambdaC - lambdaT) < TOL*abs(lambdaC) | +c | computed true | +c | | +c | If TOL .le. 0, then TOL <- macheps | +c | (machine precision) is used. | +c | | +c | IDO is the REVERSE COMMUNICATION parameter | +c | used to specify actions to be taken on return | +c | from DSAUPD. (See usage below.) | +c | | +c | It MUST initially be set to 0 before the first | +c | call to DSAUPD. | +c | | +c | INFO on entry specifies starting vector information | +c | and on return indicates error codes | +c | | +c | Initially, setting INFO=0 indicates that a | +c | random starting vector is requested to | +c | start the ARNOLDI iteration. Setting INFO to | +c | a nonzero value on the initial call is used | +c | if you want to specify your own starting | +c | vector (This vector must be placed in RESID.) | +c | | +c | The work array WORKL is used in DSAUPD as | +c | workspace. Its dimension LWORKL is set as | +c | illustrated below. | +c | | +c %-----------------------------------------------------% +c + lworkl = ncv*(ncv+8) + tol = eigval_tol + info = 0 + ido = 0 +c +c %---------------------------------------------------% +c | Specification of Algorithm Mode: | +c | | +c | This program uses the exact shift strategy | +c | (indicated by setting PARAM(1) = 1). | +c | IPARAM(3) specifies the maximum number of Arnoldi | +c | iterations allowed. Mode 1 of DSAUPD is used | +c | (IPARAM(7) = 1). All these options can be changed | +c | by the user. For details see the documentation in | +c | DSAUPD. | +c %---------------------------------------------------% +c + ishfts = 1 + maxitr = itr_in + mode1 = 1 +c + iparam(1) = ishfts +c + iparam(3) = maxitr +c + iparam(7) = mode1 +c +c %------------------------------------------------% +c | M A I N L O O P (Reverse communication loop) | +c %------------------------------------------------% +c + 10 continue +c +c %---------------------------------------------% +c | Repeatedly call the routine DSAUPD and take | +c | actions indicated by parameter IDO until | +c | either convergence is indicated or maxitr | +c | has been exceeded. | +c %---------------------------------------------% +c + call dsaupd ( ido, bmat, n, which, nev, tol, resid, + & ncv, v, ldv, iparam, ipntr, workd, workl, + & lworkl, info ) +c + if (ido .eq. -1 .or. ido .eq. 1) then +c +c %--------------------------------------% +c | Perform matrix vector multiplication | +c | y <--- OP*x | +c | The user should supply his/her own | +c | matrix vector multiplication routine | +c | here that takes workd(ipntr(1)) as | +c | the input, and return the result to | +c | workd(ipntr(2)). | +c %--------------------------------------% +c + status_flag = 0 + 11 continue + call hessvec ( n, workd(ipntr(1)), workd(ipntr(2)), + & xyz, grad, return_flag, status_flag ) + if ( status_flag.eq.0 ) go to 13 + if ( status_flag.lt.0 ) go to 9000 + label = L12 + return + 12 go to 11 + 13 continue +c +c %-----------------------------------------% +c | L O O P B A C K to call DSAUPD again. | +c %-----------------------------------------% +c + go to 10 +c + end if +c +c %----------------------------------------% +c | Either we have convergence or there is | +c | an error. | +c %----------------------------------------% +c + if ( info .lt. 0 ) then +c +c %--------------------------% +c | Error message. Check the | +c | documentation in DSAUPD. | +c %--------------------------% +c + print *, ' ' + print *, ' Error with _saupd, info = ', info + print *, ' Check documentation in _saupd ' + print *, ' ' + go to 9000 +c + else +c +c %-------------------------------------------% +c | No fatal errors occurred. | +c | Post-Process using DSEUPD. | +c | | +c | Computed eigenvalues may be extracted. | +c | | +c | Eigenvectors may be also computed now if | +c | desired. (indicated by rvec = .true.) | +c | | +c | The routine DSEUPD now called to do this | +c | post processing (Other modes may require | +c | more complicated post processing than | +c | mode1.) | +c | | +c %-------------------------------------------% +c + if ( need_eigvecs .eq. 1 ) then + rvec = .true. + else + rvec = .false. + end if +c + call dseupd ( rvec, 'All', select, d, v, ldv, sigma, + & bmat, n, which, nev, tol, resid, ncv, v, ldv, + & iparam, ipntr, workd, workl, lworkl, ierr ) +c +c %----------------------------------------------% +c | Eigenvalues are returned in the first column | +c | of the two dimensional array D and the | +c | corresponding eigenvectors are returned in | +c | the first NCONV (=IPARAM(5)) columns of the | +c | two dimensional array V if requested. | +c | Otherwise, an orthogonal basis for the | +c | invariant subspace corresponding to the | +c | eigenvalues in D is returned in V. | +c %----------------------------------------------% +c + if ( ierr .ne. 0) then +c +c %------------------------------------% +c | Error condition: | +c | Check the documentation of DSEUPD. | +c %------------------------------------% +c + print *, ' ' + print *, ' Error with _seupd, info = ', ierr + print *, ' Check the documentation of _seupd. ' + print *, ' ' + go to 9000 +c + else if ( debug_arpack.eq.1 ) then +c + nconv = iparam(5) + n_eig_out = nconv + if ( nconv .le. 0 ) then + print *, ' ' + print *, ' ARPACK: Not a single mode converged.' + print *, ' ' + go to 9000 + endif +c +C %--------------------------------------------% +C | "UnDO" DO 20 j=1,nconv loop, because it is | +C | illegal to jump in and out from a DO loop. | +C %--------------------------------------------% +c + j = 1 + 16 continue +c +c %---------------------------% +c | Compute the residual norm | +c | | +c | || A*x - lambda*x || | +c | | +c | for the NCONV accurately | +c | computed eigenvalues and | +c | eigenvectors. (iparam(5) | +c | indicates how many are | +c | accurate to the requested | +c | tolerance) | +c %---------------------------% +c + status_flag = 0 + 17 continue + call hessvec ( n, v(1,j), ax, xyz, grad, + & return_flag, status_flag ) + if ( status_flag.eq.0 ) go to 19 + if ( status_flag.lt.0 ) go to 9000 + label = L18 + return + 18 go to 17 + 19 continue +c + call daxpy(n, -d(j,1), v(1,j), 1, ax, 1) + d(j,2) = dnrm2(n, ax, 1) + d(j,2) = d(j,2) / abs(d(j,1)) +c + j = j + 1 + if ( j .gt. nconv ) go to 20 +c + go to 16 +c + 20 continue +c +c %-----------------------------% +c | Display computed residuals. | +c %-----------------------------% +c + call dmout(6, nconv, 2, d, maxncv, -6, + & 'Ritz values and relative residuals') +c +c %-------------------------------------------% +c | Print additional convergence information. | +c %-------------------------------------------% +c + if ( info .eq. 1) then + print *, ' ' + print *, ' Maximum number of iterations reached.' + print *, ' ' + else if ( info .eq. 3) then + print *, ' ' + print *, ' No shifts could be applied during implicit', + & ' Arnoldi update, try increasing NCV.' + print *, ' ' + end if +c + print *, ' ' + print *, ' _SSIMP ' + print *, ' ====== ' + print *, ' ' + print *, ' Size of the matrix is ', n + print *, ' The number of Ritz values requested is ', nev + print *, ' The number of Arnoldi vectors generated', + & ' (NCV) is ', ncv + print *, ' What portion of the spectrum: ', which + print *, ' The number of converged Ritz values is ', + & nconv + print *, ' The number of Implicit Arnoldi update', + & ' iterations taken is ', iparam(3) + print *, ' The number of OP*x is ', iparam(9) + print *, ' The convergence criterion is ', tol + print *, ' ' + end if +c +c %----------------------------% +c | Return eigvals and eigvecs | +c %----------------------------% +c + nconv = iparam(5) + n_eig_out = nconv + if ( nconv .le. 0 ) then + print *, ' ' + print *, ' ARPACK: Not a single mode converged.' + print *, ' ' + go to 9000 + endif +c + do 40 j=1, nconv + eigvals(j) = d(j,1) +c + do 30 i=1, n + eigvecs((j-1)*n+i) = v(i,j) + 30 continue + 40 continue +c + end if +c +c %--------------------------------% +c | Done with subroutine dsarpack. | +c %--------------------------------% +c + label = 0 + return +c + 9000 continue !!! Error +c + if( status_flag.eq.0 ) status_flag = ARPACK_ERROR +c + label = status_flag + return +c + end +c +c ------------------------------------------------------------------ diff --git a/AmberTools/src/sqm/Makefile b/AmberTools/src/sqm/Makefile index a0fa790..5983764 100644 --- a/AmberTools/src/sqm/Makefile +++ b/AmberTools/src/sqm/Makefile @@ -82,7 +82,7 @@ QMOBJ = qm2_allocate_e_repul.o qm2_calc_charges.o qm2_calc_dipole.o \ install: sqm$(SFX) mv sqm$(SFX) $(BINDIR) -sqm$(SFX): $(SQMOBJ) $(QMOBJ) netlib sys +sqm$(SFX): $(SQMOBJ) $(QMOBJ) sys $(FC) $(FPPFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o sqm$(SFX) $(SQMOBJ) $(QMOBJ) \ -L$(LIBDIR) $(FLIBSF) ../lib/sys.a $(LDFLAGS) $(AMBERLDFLAGS) diff --git a/AmberTools/test/Makefile b/AmberTools/test/Makefile index 8252d52..24b9272 100644 --- a/AmberTools/test/Makefile +++ b/AmberTools/test/Makefile @@ -3,14 +3,14 @@ include ../src/config.h ###### Top-level targets, for general use: ############################ test:: - ./test_at_serial.sh + +./test_at_serial.sh test.parallel:: ./test_at_parallel.sh ###### Intermediate-level targets: ############################ -test.serial: clean is_amberhome_defined \ +test.serial: is_amberhome_defined \ test.nab test.cpptraj test.antechamber test.mdgx \ test.leap test.resp test.pbsa test.gbnsr6 test.mmpbsa test.parmed \ test.elsize test.sqm test.rism1d test.amberlite \ diff --git a/AmberTools/test/test_at_serial.sh b/AmberTools/test/test_at_serial.sh index a154c84..c092eb6 100755 --- a/AmberTools/test/test_at_serial.sh +++ b/AmberTools/test/test_at_serial.sh @@ -44,3 +44,9 @@ fi # save summary for later reporting: tail -5 ${logfile} > ${logdir}/at_summary + +if [ "${questionable_count}" -ne 0 -o "${error_count}" -ne 0 ] +then + # Tests failed + exit 1 +fi diff --git a/AmberTools/test/test_check.sh b/AmberTools/test/test_check.sh index 108c446..62c0b88 100644 --- a/AmberTools/test/test_check.sh +++ b/AmberTools/test/test_check.sh @@ -63,7 +63,7 @@ check_environment() { # We are done here for Macs test $is_mac = "yes" && return - python << EOF + python2 << EOF import os import sys ambhome = os.getenv('AMBERHOME')