********>Master patch File - Amber 9 fixes for Fujitsu PrimePower Programs: AMBER 9 Description: This is the master patch file for Amber 9. It contains all of the bugfixes released to date in a single patch script. Usage: 1) Apply Amber9 bugfixes first. 2) Save this file in your $AMBERHOME directory and then apply this patch file to your amber 9 distribution as follows: cd $AMBERHOME patch -p0 -N -r patch_rejects < fujitsu-fix.all If you have already patched some files the patch program should realise this and skip them. If you have trouble then you may need to apply each of the bug fixes separately. ----------------------------------------------------------------------------- *** src/lib/Makefile Tue Apr 4 09:35:29 2006 --- src/lib/Makefile Mon Sep 3 13:43:51 2007 *************** *** 33,39 **** sys.a: sys.o wallclock.o ! $(AR)sys.a sys.o wallclock.o $(RANLIB) sys.a install: new2oldparm$(SFX) --- 33,39 ---- sys.a: sys.o wallclock.o ! $(AR) sys.a sys.o wallclock.o $(RANLIB) sys.a install: new2oldparm$(SFX) *** src/lapack/Makefile Tue Apr 4 09:35:05 2006 --- src/lapack/Makefile Mon Sep 3 13:52:12 2007 *************** *** 31,37 **** zladiv.o zlarf.o install: $(USE_LAPACKLIB) ! $(AR)lapack.a $(USE_LAPACKLIB) $(RANLIB) lapack.a clean: --- 31,37 ---- zladiv.o zlarf.o install: $(USE_LAPACKLIB) ! $(AR) lapack.a $(USE_LAPACKLIB) $(RANLIB) lapack.a clean: *** src/blas/Makefile Tue Apr 4 09:34:27 2006 --- src/blas/Makefile Mon Sep 3 13:54:11 2007 *************** *** 22,28 **** zher2.o zdscal.o ztrmv.o zcopy.o ztrmm.o zgemm.o zgerc.o install: $(USE_BLASLIB) ! $(AR)blas.a $(USE_BLASLIB) $(RANLIB) blas.a clean: --- 22,28 ---- zher2.o zdscal.o ztrmv.o zcopy.o ztrmm.o zgemm.o zgerc.o install: $(USE_BLASLIB) ! $(AR) blas.a $(USE_BLASLIB) $(RANLIB) blas.a clean: *** src/lmod/Makefile Tue Apr 4 09:35:29 2006 --- src/lmod/Makefile Mon Sep 3 13:55:41 2007 *************** *** 9,15 **** install: $(USE_LMODLIB) cd xmin; make cd lmod; make ! $(AR)lmod.a xmin/*.o lmod/*.o $(RANLIB) lmod.a arpack: --- 9,15 ---- install: $(USE_LMODLIB) cd xmin; make cd lmod; make ! $(AR) lmod.a xmin/*.o lmod/*.o $(RANLIB) lmod.a arpack: *** src/dcqtp/mod/Makefile Tue Apr 4 09:34:27 2006 --- src/dcqtp/mod/Makefile Mon Sep 3 14:41:17 2007 *************** *** 125,131 **** all: $(PROG) libdivcon.a: $(QMMMOBJS) ! $(AR)libdivcon.a $(QMMMOBJS) $(RANLIB) libdivcon.a mv libdivcon.a ../src/qmmm/ --- 125,131 ---- all: $(PROG) libdivcon.a: $(QMMMOBJS) ! $(AR) libdivcon.a $(QMMMOBJS) $(RANLIB) libdivcon.a mv libdivcon.a ../src/qmmm/ *** src/dcqtp/mod/Makefile Mon Sep 3 14:42:34 2007 --- src/dcqtp/mod/Makefile Mon Sep 3 14:46:16 2007 *************** *** 1523,1528 **** --- 1523,1529 ---- $(F90) -c $(F90FLAGS) -o ../obj/zmake.o ../obj/zmake.f ../obj/qm_mm_div.o: ../src/qmmm/qm_mm_div.F90 ../obj/global_module.o ../../sander/qmmm_module.o + cp ../../sander/*.mod . $(FPPP) ../src/qmmm/qm_mm_div.F90 > ../obj/qm_mm_div.f $(F90) -c $(F90FLAGS) -o ../obj/qm_mm_div.o ../obj/qm_mm_div.f *** src/sander/Makefile Tue Apr 4 09:35:54 2006 --- src/sander/Makefile Mon Sep 3 14:51:11 2007 *************** *** 85,91 **** matinv.o assert.o mmtsb.o mmtsb_client.o erfcfun.o veclib.o \ is_init.o constantph.o prn_dipoles.o ips.o sglds.o \ $(AMOEBAOBJ) bintraj.o \ ! spatial_recip.o spatial_fft.o parms.o LESOBJ= \ $(EVBOBJ) constants.o qmmm_module.o trace.o lmod.o decomp.o icosasurf.o \ --- 85,91 ---- matinv.o assert.o mmtsb.o mmtsb_client.o erfcfun.o veclib.o \ is_init.o constantph.o prn_dipoles.o ips.o sglds.o \ $(AMOEBAOBJ) bintraj.o \ ! spatial_recip.o spatial_fft.o parms.o evb_pimd_init.o LESOBJ= \ $(EVBOBJ) constants.o qmmm_module.o trace.o lmod.o decomp.o icosasurf.o \ *************** *** 106,112 **** mmtsb.o mmtsb_client.o erfcfun.o veclib.o \ is_init.o constantph.o prn_dipoles.o ips.o sglds.o \ $(QMOBJ) $(QM2OBJ) $(QMMMOBJ_DFTB) $(AMOEBAOBJ) bintraj.o \ ! spatial_recip.o spatial_fft.o pimd_vars.PIMD.o parms.o PIMDOBJ= \ parms.o constants.o qmmm_module.PIMD.o \ --- 106,112 ---- mmtsb.o mmtsb_client.o erfcfun.o veclib.o \ is_init.o constantph.o prn_dipoles.o ips.o sglds.o \ $(QMOBJ) $(QM2OBJ) $(QMMMOBJ_DFTB) $(AMOEBAOBJ) bintraj.o \ ! spatial_recip.o spatial_fft.o pimd_vars.PIMD.o parms.o evb_pimd_init.o PIMDOBJ= \ parms.o constants.o qmmm_module.PIMD.o \ *** src/ptraj/analyze.c Mon Sep 3 14:58:41 2007 --- src/ptraj/analyze.c Mon Sep 3 16:13:19 2007 *************** *** 467,485 **** if(nevec == 0 || nelem == nevec){ neval = nelem; ! eigval = (double *) safe_malloc(nelem * sizeof(double)); // for the eigenvalues ! workd = (double *) safe_malloc(3 * nelem * sizeof(double)); // for the function dspev to work with ! uplo[0] = 'L'; // lower triangle of matrix is expected as input for dspev ! if (nevec == nelem){ // get all eigenvectors ! vout = (double *) safe_malloc(nelem * nelem * sizeof(double)); // for the eigenvectors ! jobz[0] = 'V'; // calculate eigenvalues and eigenvectors ! ldz = nelem; // dimension of "vout" } ! else if(nevec == 0){ // get only eigenvalues; only possible if thermo flag is set, otherwise nevec is set to 1 per default ! vout = (double *) safe_malloc(nelem * sizeof(double)); // for the eigenvectors ! jobz[0] = 'N'; // only calculate eigenvalues ! ldz = 1; // dimension of "vout" } dspev_(jobz, uplo, &nelem, mat, eigval, vout, &ldz, workd, &info); --- 467,485 ---- if(nevec == 0 || nelem == nevec){ neval = nelem; ! eigval = (double *) safe_malloc(nelem * sizeof(double)); /* for the eigenvalues */ ! workd = (double *) safe_malloc(3 * nelem * sizeof(double)); /* for the function dspev to work with */ ! uplo[0] = 'L'; /* lower triangle of matrix is expected as input for dspev */ ! if (nevec == nelem){ /* get all eigenvectors */ ! vout = (double *) safe_malloc(nelem * nelem * sizeof(double)); /* for the eigenvectors */ ! jobz[0] = 'V'; /* calculate eigenvalues and eigenvectors */ ! ldz = nelem; /* dimension of "vout" */ } ! else if(nevec == 0){ /* get only eigenvalues; only possible if thermo flag is set, otherwise nevec is set to 1 per default */ ! vout = (double *) safe_malloc(nelem * sizeof(double)); /* for the eigenvectors */ ! jobz[0] = 'N'; /* only calculate eigenvalues */ ! ldz = 1; /* dimension of "vout" */ } dspev_(jobz, uplo, &nelem, mat, eigval, vout, &ldz, workd, &info); *************** *** 490,496 **** safe_free(workd); } ! else{ // get up to n-1 eigenvectors neval = nevec; if(2*nevec <= nelem){ --- 490,496 ---- safe_free(workd); } ! else{ /* get up to n-1 eigenvectors */ neval = nevec; if(2*nevec <= nelem){ *** src/arpack/Makefile Tue Apr 4 09:34:26 2006 --- src/arpack/Makefile Mon Sep 3 16:17:21 2007 *************** *** 22,28 **** ssgets.o ssortc.o ssortr.o sstatn.o sstats.o sstqrb.o arpack.a: $(ARPACKLIB) $(SARPACKLIB) ! $(AR)arpack.a $(ARPACKLIB) $(SARPACKLIB) $(RANLIB) arpack.a clean: --- 22,28 ---- ssgets.o ssortc.o ssortr.o sstatn.o sstats.o sstqrb.o arpack.a: $(ARPACKLIB) $(SARPACKLIB) ! $(AR) arpack.a $(ARPACKLIB) $(SARPACKLIB) $(RANLIB) arpack.a clean: *** src/ptraj/pdb/Makefile Tue Apr 4 09:35:54 2006 --- src/ptraj/pdb/Makefile Mon Sep 3 16:19:07 2007 *************** *** 9,15 **** install: $(LIBARCH) $(LIBARCH): $(OBJS) ! $(AR)$(LIBARCH) $(OBJS) $(RANLIB) $(LIBARCH) clean:; -rm -f $(OBJS) $(LIBARCH) --- 9,15 ---- install: $(LIBARCH) $(LIBARCH): $(OBJS) ! $(AR) $(LIBARCH) $(OBJS) $(RANLIB) $(LIBARCH) clean:; -rm -f $(OBJS) $(LIBARCH) *** src/ptraj/main.c Tue Apr 4 09:35:48 2006 --- src/ptraj/main.c Mon Sep 3 16:25:04 2007 *************** *** 124,130 **** --- 124,134 ---- int + #ifdef FUJITSU_FRT + MAIN__(unsigned int argCount, char **argPointer) + #else main(unsigned int argCount, char **argPointer) + #endif { ptrajState **statep; char *name; *** src/mm_pbsa/Makefile Tue Apr 4 09:35:29 2006 --- src/mm_pbsa/Makefile Mon Sep 3 16:28:15 2007 *************** *** 33,39 **** $(LOAD) -o make_crd_hg$(SFX) make_crd_hg.o $(LIBOBJ) $(LOADLIB) molsurf$(SFX): molsurf.o ! $(CC) $(CFLAGS) -o molsurf$(SFX) molsurf.o $(LM) ../lib/amopen.o: ../lib/amopen.f cd ../lib; make amopen.o --- 33,39 ---- $(LOAD) -o make_crd_hg$(SFX) make_crd_hg.o $(LIBOBJ) $(LOADLIB) molsurf$(SFX): molsurf.o ! $(LOADCC) $(CFLAGS) -o molsurf$(SFX) molsurf.o $(LM) ../lib/amopen.o: ../lib/amopen.f cd ../lib; make amopen.o *** src/leap/src/Wc/Makefile Tue Apr 4 09:35:06 2006 --- src/leap/src/Wc/Makefile Mon Sep 3 16:32:32 2007 *************** *** 10,16 **** $(CC) -c -I$(XHOME)/include $(CFLAGS) -o $@ $< libWcLeap.a: $(OBJS) ! $(AR)$@ $(OBJS) $(RANLIB) $@ clean: --- 10,16 ---- $(CC) -c -I$(XHOME)/include $(CFLAGS) -o $@ $< libWcLeap.a: $(OBJS) ! $(AR) $@ $(OBJS) $(RANLIB) $@ clean: *** src/leap/src/Xmu/Makefile Tue Apr 4 09:35:26 2006 --- src/leap/src/Xmu/Makefile Mon Sep 3 16:33:43 2007 *************** *** 122,128 **** $(CC) -c -I$(XHOME)/include $(CFLAGS) -o $@ $< libXmu.a: $(OBJS) ! $(AR)$@ $(OBJS) $(RANLIB) $@ clean: --- 122,128 ---- $(CC) -c -I$(XHOME)/include $(CFLAGS) -o $@ $< libXmu.a: $(OBJS) ! $(AR) $@ $(OBJS) $(RANLIB) $@ clean: *** src/leap/src/Xpm/Makefile Tue Apr 4 09:35:26 2006 --- src/leap/src/Xpm/Makefile Mon Sep 3 16:34:47 2007 *************** *** 10,16 **** $(CC) -c -I$(XHOME)/include $(CFLAGS) -o $@ $< libXpm.a: $(OBJS) ! $(AR)$@ $(OBJS) $(RANLIB) $@ clean: --- 10,16 ---- $(CC) -c -I$(XHOME)/include $(CFLAGS) -o $@ $< libXpm.a: $(OBJS) ! $(AR) $@ $(OBJS) $(RANLIB) $@ clean: *** src/leap/src/Xraw/Makefile Tue Apr 4 09:35:26 2006 --- src/leap/src/Xraw/Makefile Mon Sep 3 16:35:39 2007 *************** *** 10,16 **** $(CC) -c -I$(XHOME)/include $(CFLAGS) -o $@ $< libXaw.a: $(OBJS) ! $(AR)$@ $(OBJS) $(RANLIB) $@ clean: --- 10,16 ---- $(CC) -c -I$(XHOME)/include $(CFLAGS) -o $@ $< libXaw.a: $(OBJS) ! $(AR) $@ $(OBJS) $(RANLIB) $@ clean: *** src/sander/spatial_fft.f Tue Apr 4 09:35:55 2006 --- src/sander/spatial_fft.f Tue Sep 4 10:07:08 2007 *************** *** 621,627 **** integer length ! length of transform, intent(in) _DATA_ data(0:*) ! original data, intent(inout) _REAL_, dimension(1:*) :: table ! _DATA_,parameter :: c_one=(one,zero),c_i=(zero,one) _REAL_ a _REAL_ b --- 621,627 ---- integer length ! length of transform, intent(in) _DATA_ data(0:*) ! original data, intent(inout) _REAL_, dimension(1:*) :: table ! _DATA_,parameter :: c_one=(1.0d0,0.0d0),c_i=(0.0d0,1.0d0) _REAL_ a _REAL_ b *** src/sander/spatial_recip.f Tue Apr 4 09:35:55 2006 --- src/sander/spatial_recip.f Tue Sep 4 10:16:28 2007 *************** *** 343,349 **** zgridmax,jbot0,jbot,jtop !........Zero the Charge grids ! q(1:siz_q)=(ZERO,ZERO) 199 format(i4,a,10i5) --- 343,349 ---- zgridmax,jbot0,jbot,jtop !........Zero the Charge grids ! q(1:siz_q)=cmplx(ZERO,ZERO) 199 format(i4,a,10i5) *************** *** 402,410 **** end if iq=ishft(iqi+1,-1) if(mod(iqi,2) == 0)then ! q(iq) = q(iq) + (ZERO,ONE)*theta1(ith1,im)*prod else ! q(iq) = q(iq) + (ONE,ZERO)*theta1(ith1,im)*prod endif end do endif --- 402,410 ---- end if iq=ishft(iqi+1,-1) if(mod(iqi,2) == 0)then ! q(iq) = q(iq) + cmplx(ZERO,ONE)*theta1(ith1,im)*prod else ! q(iq) = q(iq) + cmplx(ONE,ZERO)*theta1(ith1,im)*prod endif end do endif *************** *** 879,885 **** !........Insist that Q(1,1,1) is set to 0 (true already for neutral) if(master)then ! q(1,1,1) = (ZERO,ZERO) end if !====================================================================== --- 879,885 ---- !........Insist that Q(1,1,1) is set to 0 (true already for neutral) if(master)then ! q(1,1,1) = cmplx(ZERO,ZERO) end if !====================================================================== *** src/sander/qm2_scf.f Tue Apr 4 09:35:55 2006 --- src/sander/qm2_scf.f Tue Sep 4 14:43:23 2007 *************** *** 135,143 **** #ifdef MPI !Reduce the fock matrix to master thread to do open MP diagonalisation ! call mpi_reduce(qm2_struct%fock_matrix,qmmm_mpi%matsize_red_scratch,qm2_struct%matsize, & MPI_DOUBLE_PRECISION,mpi_sum,0,qmmm_mpi%commqmmm,ier) ! qm2_struct%fock_matrix(1:qm2_struct%matsize)=qmmm_mpi%matsize_red_scratch(1:qm2_struct%matsize) #endif if (allow_pseudo_diag .AND. density_diff <= qmmm_nml%pseudo_diag_criteria) then --- 135,148 ---- #ifdef MPI !Reduce the fock matrix to master thread to do open MP diagonalisation ! !FJ ! ! call mpi_reduce(qm2_struct%fock_matrix,qmmm_mpi%matsize_red_scratch,qm2_struct%matsize, & ! ! MPI_DOUBLE_PRECISION,mpi_sum,0,qmmm_mpi%commqmmm,ier) ! ! qm2_struct%fock_matrix(1:qm2_struct%matsize)=qmmm_mpi%matsize_red_scratch(1:qm2_struct%matsize) ! call mpi_reduce(fock_matrix,qmmm_mpi%matsize_red_scratch,qm2_struct%matsize, & MPI_DOUBLE_PRECISION,mpi_sum,0,qmmm_mpi%commqmmm,ier) ! fock_matrix(1:qm2_struct%matsize)=qmmm_mpi%matsize_red_scratch(1:qm2_struct%matsize) ! !FJ #endif if (allow_pseudo_diag .AND. density_diff <= qmmm_nml%pseudo_diag_criteria) then *************** *** 220,226 **** density_diff=zero end if !only master calculated the density matrix ! call mpi_bcast(qm2_struct%den_matrix, qm2_struct%matsize, MPI_DOUBLE_PRECISION, 0, qmmm_mpi%commqmmm, ier) #endif !End of step 2 end if ! if (.NOT. first_iteration) --- 225,234 ---- density_diff=zero end if !only master calculated the density matrix ! !FJ ! ! call mpi_bcast(qm2_struct%den_matrix, qm2_struct%matsize, MPI_DOUBLE_PRECISION, 0, qmmm_mpi%commqmmm, ier) ! call mpi_bcast(P, qm2_struct%matsize, MPI_DOUBLE_PRECISION, 0, qmmm_mpi%commqmmm, ier) ! !FJ #endif !End of step 2 end if ! if (.NOT. first_iteration) *************** *** 231,236 **** --- 239,247 ---- !it is our first MD step. !For the moment let all threads calculate mulliken charges as this is !probably quicker than doing a reduce. + !FJ + qm2_struct%den_matrix=P ! write back to global variable + !FJ if (qm2_struct%calc_mchg_scf .or. qmewald%ewald_startup) then do i=1,qmmm_struct%nquant_nlink call qm2_calc_mulliken(i,scf_mchg(i)) *** src/sander/qm_gb.f Tue Apr 4 09:35:55 2006 --- src/sander/qm_gb.f Tue Sep 4 15:01:54 2007 *************** *** 104,110 **** !Calculate exp(-kappa*fij) call vdinv(loop_count,qmqm_onefij,qm_gb%qmqm_kappafij) qm_gb%qmqm_kappafij(1:loop_count) = -qm_gb%kappa*qm_gb%qmqm_kappafij(1:loop_count) ! call vdexp( loop_count, qm_gb%qmqm_kappafij, qm_gb%qmqm_kappafij ) end if return --- 104,113 ---- !Calculate exp(-kappa*fij) call vdinv(loop_count,qmqm_onefij,qm_gb%qmqm_kappafij) qm_gb%qmqm_kappafij(1:loop_count) = -qm_gb%kappa*qm_gb%qmqm_kappafij(1:loop_count) ! !FJ ! qm_gb%qmqm_kappafij(1:loop_count) = exp(qm_gb%qmqm_kappafij(1:loop_count)) ! ! call vdexp( loop_count, qm_gb%qmqm_kappafij, qm_gb%qmqm_kappafij ) ! !FJ end if return *** src/sander/makedepend Tue Apr 4 09:35:55 2006 --- src/sander/makedepend Tue Sep 4 16:12:50 2007 *************** *** 134,139 **** --- 134,145 ---- printf "\t\$(FPP) $fileroot.f > _$fileroot.f\n"; printf "\t\$(FC) -c \$(FOPTFLAGS) -o \$@ _$fileroot.f\n\n"; } + else { + printf "\n$fileroot.o: $fileroot.f\n"; + printf "\t\$(FPP) $fileroot.f > _$fileroot.f\n"; + printf "\t\$(FC) -c \$(FO2FLAGS) -o \$@ _$fileroot.f\n\n"; + } + if( defined $LES{$fileroot} ){ printf "$fileroot.LES.o: $depsLES\n" unless $depsLES eq ""; printf "\n$fileroot.LES.o: $fileroot.f\n"; *** src/sander/amoeba_multipoles.f Tue Apr 4 09:35:54 2006 --- src/sander/amoeba_multipoles.f Tue Sep 4 16:17:41 2007 *************** *** 1,4 **** ! ! #include "dprec.h" #include "assert.h" --- 1,4 ---- ! ! #include "dprec.h" #include "assert.h" *** src/antechamber/top2mol2.c Tue Sep 4 15:11:40 2007 --- src/antechamber/top2mol2.c Wed Oct 24 15:18:14 2007 *************** *** 189,199 **** --- 189,202 ---- j = 0; for (;;) { if (fgets(line, MAXCHAR, fpinc) == NULL) break; j++; if (j == 2) { + /* Hiro sscanf(line, "%d", &crd_atomnum); + Hiro */ + sscanf(line, "%ld", &crd_atomnum); if(crd_atomnum != top_atomnum) { printf("\nError: the atom number from the topology (%ld) and the crd (%ld) files is not same\n", top_atomnum, crd_atomnum); exit(0); } } *** src/ptraj/Makefile Tue Apr 4 09:35:48 2006 --- src/ptraj/Makefile Wed Oct 24 15:36:22 2007 *************** *** 44,57 **** rdparm.o: rdparm.c $(HEADERS) energy.o: energy.c energy.h ptraj.h actions.h utility.h mask.o: mask.c mask.h rdparm$(SFX): $(NETCDF) $(OBJECTS) lapack arpack blas syslib pdblib ! $(LOADPTRAJ) -o rdparm$(SFX) $(OBJECTS) $(LIBS) $(LOADLIB) $(NETCDFLIB) ptraj$(SFX): $(NETCDF) $(OBJECTS) lapack arpack blas syslib pdblib ! $(LOADPTRAJ) -o ptraj$(SFX) $(OBJECTS) $(LIBS) $(LOADLIB) $(NETCDFLIB) # lapack: cd ../lapack; make --- 44,57 ---- rdparm.o: rdparm.c $(HEADERS) energy.o: energy.c energy.h ptraj.h actions.h utility.h mask.o: mask.c mask.h rdparm$(SFX): $(NETCDF) $(OBJECTS) lapack arpack blas syslib pdblib ! $(LOADPTRAJ) -o rdparm$(SFX) $(OBJECTS) $(LIBS) -lelf $(LOADLIB) -lfj90 -lfj90f $(NETCDFLIB) ptraj$(SFX): $(NETCDF) $(OBJECTS) lapack arpack blas syslib pdblib ! $(LOADPTRAJ) -o ptraj$(SFX) $(OBJECTS) $(LIBS) -lelf $(LOADLIB) -lfj90 -lfj90f $(NETCDFLIB) # lapack: cd ../lapack; make *** src/lib/amopen.f Tue Apr 4 09:35:29 2006 --- src/lib/amopen.f Mon Oct 29 12:26:04 2007 *************** *** 179,187 **** --- 179,193 ---- $ ' Error on OPEN: ',fname(1:len_trim(fname)) close(unit=6) endif call mexit(6, 1) endif + !FJ + if (lun.ne.6) then + !FJ rewind(lun) + !FJ + end if + !FJ return end #endif