hdiff output

r33309/bnbalign.f90 2017-09-14 11:30:16.052925992 +0100 r33308/bnbalign.f90 2017-09-14 11:30:16.756935331 +0100
649:     NBAD = NBAD + 1649:     NBAD = NBAD + 1
650: ENDIF650: ENDIF
651: 651: 
652: NCALC = NCALC + 1652: NCALC = NCALC + 1
653: 653: 
654: END SUBROUTINE CALCBOUNDS654: END SUBROUTINE CALCBOUNDS
655: 655: 
656: SUBROUTINE FINDPERMVAL(PERM, NATOMS, MATVALS, DINVIDX, MAXNEI, NPERMGROUP, BEST)656: SUBROUTINE FINDPERMVAL(PERM, NATOMS, MATVALS, DINVIDX, MAXNEI, NPERMGROUP, BEST)
657: 657: 
658: IMPLICIT NONE658: IMPLICIT NONE
659: INTEGER, INTENT(IN) :: NATOMS, NPERMGROUP, PERM(NATOMS), DINVIDX(NATOMS*NATOMS,NPERMGROUP), &659: INTEGER, INTENT(IN) :: PERM(NATOMS), NATOMS, DINVIDX(NATOMS*NATOMS,NPERMGROUP), &
660:  & MAXNEI660:  & MAXNEI, NPERMGROUP
661: DOUBLE PRECISION, INTENT(IN) :: MATVALS(NATOMS*MAXNEI,NPERMGROUP)661: DOUBLE PRECISION, INTENT(IN) :: MATVALS(NATOMS*MAXNEI,NPERMGROUP)
662: DOUBLE PRECISION, INTENT(OUT) :: BEST662: DOUBLE PRECISION, INTENT(OUT) :: BEST
663: 663: 
664: INTEGER J1,M,J,I,IA,NPERM,NDUMMY664: INTEGER J1,M,J,I,IA,NPERM,NDUMMY
665: 665: 
666: BEST = 0.D0666: BEST = 0.D0
667: NDUMMY = 0667: NDUMMY = 0
668: DO J1=1,NPERMGROUP668: DO J1=1,NPERMGROUP
669:     NPERM = NPERMSIZE(J1)669:     NPERM = NPERMSIZE(J1)
670:     M = MIN(NPERM,MAXNEI)670:     M = MIN(NPERM,MAXNEI)
674:         BEST = BEST + MATVALS(M*(J-1)+I,J1)674:         BEST = BEST + MATVALS(M*(J-1)+I,J1)
675:     END DO675:     END DO
676:     NDUMMY = NDUMMY + NPERM676:     NDUMMY = NDUMMY + NPERM
677: END DO677: END DO
678: 678: 
679: END SUBROUTINE FINDPERMVAL679: END SUBROUTINE FINDPERMVAL
680: 680: 
681: SUBROUTINE INVPAIRDISTIDX(DUMMYIDX, DINVIDX, NATOMS, MAXNEI, NPERMGROUP)681: SUBROUTINE INVPAIRDISTIDX(DUMMYIDX, DINVIDX, NATOMS, MAXNEI, NPERMGROUP)
682: 682: 
683: IMPLICIT NONE683: IMPLICIT NONE
684: INTEGER, INTENT(IN) :: NATOMS, MAXNEI, NPERMGROUP, DUMMYIDX(NATOMS*MAXNEI,NPERMGROUP)684: INTEGER, INTENT(IN) :: DUMMYIDX(NATOMS*MAXNEI,NPERMGROUP), NATOMS, MAXNEI, NPERMGROUP
685: INTEGER, INTENT(OUT) :: DINVIDX(NATOMS*NATOMS,NPERMGROUP)685: INTEGER, INTENT(OUT) :: DINVIDX(NATOMS*NATOMS,NPERMGROUP)
686: INTEGER J1,NPERM,I,J,M686: INTEGER J1,NPERM,I,J,M
687: 687: 
688: DINVIDX = -1688: DINVIDX = -1
689: DO J1=1,NPERMGROUP689: DO J1=1,NPERMGROUP
690:     NPERM = NPERMSIZE(J1)690:     NPERM = NPERMSIZE(J1)
691:     M = MIN(NPERM,MAXNEI)691:     M = MIN(NPERM,MAXNEI)
692:     DO J=1,NPERM692:     DO J=1,NPERM
693:         DO I=1,M693:         DO I=1,M
694:             DINVIDX(NPERM*(J-1)+DUMMYIDX(M*(J-1)+I,J1),J1) = I694:             DINVIDX(NPERM*(J-1)+DUMMYIDX(M*(J-1)+I,J1),J1) = I


r33309/CMakeLists.txt 2017-09-14 11:30:16.536932412 +0100 r33308/CMakeLists.txt 2017-09-14 11:30:17.200941220 +0100
180: 180: 
181: include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)181: include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)
182: ExternalProject_Add(fftw182: ExternalProject_Add(fftw
183:   SOURCE_DIR ${SVN_ROOT}/MYFFTW183:   SOURCE_DIR ${SVN_ROOT}/MYFFTW
184:   # To avoid having to recompile fftw3 every time we create a new GMIN build directory, we install the library centrally184:   # To avoid having to recompile fftw3 every time we create a new GMIN build directory, we install the library centrally
185:   # rather than in the current build directory.185:   # rather than in the current build directory.
186:   PREFIX ${SVN_ROOT}/MYFFTW/local_build_${FC_PROGNAME}186:   PREFIX ${SVN_ROOT}/MYFFTW/local_build_${FC_PROGNAME}
187:   # sn402: I think that it shouldn't matter which fortran compiler has been used to compile the fftw3 interface - in theory187:   # sn402: I think that it shouldn't matter which fortran compiler has been used to compile the fftw3 interface - in theory
188:   # the wrapper functions are compatible with all compilers. However, to be on the safe side we create separate install directories188:   # the wrapper functions are compatible with all compilers. However, to be on the safe side we create separate install directories
189:   # for each compiler.189:   # for each compiler.
190:   CONFIGURE_COMMAND ${SVN_ROOT}/MYFFTW/configure F77=${CMAKE_Fortran_COMPILER} --prefix=${SVN_ROOT}/MYFFTW/local_build_${FC_PROGNAME}/install --disable-doc190:   CONFIGURE_COMMAND ${SVN_ROOT}/MYFFTW/configure F77=${CMAKE_Fortran_COMPILER} --prefix=${SVN_ROOT}/MYFFTW/local_build_${FC_PROGNAME}/install
191:   BUILD_COMMAND make191:   BUILD_COMMAND make
192:   INSTALL_COMMAND ${MAKE_INSTALL})192:   INSTALL_COMMAND ${MAKE_INSTALL})
193:   set_target_properties(fftw PROPERTIES Fortran_MODULE_DIRECTORY "${PREFIX}") 
194: 193: 
195: # Link CHOLMOD, if we're using it194: # Link CHOLMOD, if we're using it
196: option(WITH_SPARSE "Compile with SuiteSparse for sparse hessian diagonalisation" OFF)195: option(WITH_SPARSE "Compile with SuiteSparse for sparse hessian diagonalisation" OFF)
197: if(WITH_SPARSE)196: if(WITH_SPARSE)
198:    add_subdirectory(${SVN_ROOT}/SuiteSparse SuiteSparse)197:    add_subdirectory(${SVN_ROOT}/SuiteSparse SuiteSparse)
199:    include_directories(${SVN_ROOT}/SuiteSparse/SuiteSparse/CHOLMOD/Include)198:    include_directories(${SVN_ROOT}/SuiteSparse/SuiteSparse/CHOLMOD/Include)
200:    include_directories(${SVN_ROOT}/SuiteSparse/SuiteSparse/SuiteSparse_config)199:    include_directories(${SVN_ROOT}/SuiteSparse/SuiteSparse/SuiteSparse_config)
201:    if(SuiteSparse_GPU)200:    if(SuiteSparse_GPU)
202:       include_directories(${CUDA_TOOLKIT_ROOT_DIR}/include)201:       include_directories(${CUDA_TOOLKIT_ROOT_DIR}/include)
203:    endif(SuiteSparse_GPU)202:    endif(SuiteSparse_GPU)


r33309/fastclusters.f90 2017-09-14 11:30:16.316929494 +0100 r33308/fastclusters.f90 2017-09-14 11:30:16.976938249 +0100
165: CALL SETNATOMS(NATOMS)165: CALL SETNATOMS(NATOMS)
166: 166: 
167: ! Setting keywords for fastoverlap use of minpermdist, will be reset when exiting program167: ! Setting keywords for fastoverlap use of minpermdist, will be reset when exiting program
168: PERMINVOPTSAVE = PERMINVOPT168: PERMINVOPTSAVE = PERMINVOPT
169: NOINVERSIONSAVE = NOINVERSION169: NOINVERSIONSAVE = NOINVERSION
170: PERMINVOPT = .FALSE.170: PERMINVOPT = .FALSE.
171: NOINVERSION = .TRUE.171: NOINVERSION = .TRUE.
172: 172: 
173: ! If the kernel width is not specified by the user, we choose a value appropriate to this system (1/3 of the average173: ! If the kernel width is not specified by the user, we choose a value appropriate to this system (1/3 of the average
174: ! nearest-neighbour separation in COORDSA)174: ! nearest-neighbour separation in COORDSA)
175: IF (KWIDTH .LE. 0.0D0) CALL CHOOSE_KWIDTH(NATOMS, COORDSA, COORDSB, KWIDTH, DEBUG)175: IF (KWIDTH .LE. 0.0D0) CALL CHOOSE_KWIDTH(NATOMS, COORDSA, COORDSB, KWIDTH)
176: 176: 
177: ! Centering COORDSA and COORDSB on the origin177: ! Centering COORDSA and COORDSB on the origin
178: COMA = 0.D0178: COMA = 0.D0
179: COMB = 0.D0179: COMB = 0.D0
180: DO J=1,NATOMS180: DO J=1,NATOMS
181:     COMA = COMA + COORDSA(3*J-2:3*J)181:     COMA = COMA + COORDSA(3*J-2:3*J)
182:     COMB = COMB + COORDSB(3*J-2:3*J)182:     COMB = COMB + COORDSB(3*J-2:3*J)
183: ENDDO183: ENDDO
184: COMA = COMA/NATOMS184: COMA = COMA/NATOMS
185: COMB = COMB/NATOMS185: COMB = COMB/NATOMS
1054:   ROTM (3,1) =          SINB * COSA1054:   ROTM (3,1) =          SINB * COSA
1055:   ROTM (1,2) = - COSG * COSB * SINA  -  SING * COSA1055:   ROTM (1,2) = - COSG * COSB * SINA  -  SING * COSA
1056:   ROTM (2,2) = - SING * COSB * SINA  +  COSG * COSA1056:   ROTM (2,2) = - SING * COSB * SINA  +  COSG * COSA
1057:   ROTM (3,2) = -        SINB * SINA1057:   ROTM (3,2) = -        SINB * SINA
1058:   ROTM (1,3) = - COSG * SINB1058:   ROTM (1,3) = - COSG * SINB
1059:   ROTM (2,3) = - SING * SINB1059:   ROTM (2,3) = - SING * SINB
1060:   ROTM (3,3) =          COSB1060:   ROTM (3,3) =          COSB
1061: 1061: 
1062: END SUBROUTINE EULERINVM1062: END SUBROUTINE EULERINVM
1063: 1063: 
1064: SUBROUTINE CHOOSE_KWIDTH(NATOMS, COORDSA, COORDSB, KWIDTH, DEBUG)1064: SUBROUTINE CHOOSE_KWIDTH(NATOMS, COORDSA, COORDSB, KWIDTH)
1065: ! Calculate a reasonable default kernel width for the current alignment problem.1065: ! Calculate a reasonable default kernel width for the current alignment problem.
1066: ! KWIDTH is set to 1/3 times the average nearest-neighbour separation in the two clusters.1066: ! KWIDTH is set to 1/3 times the average nearest-neighbour separation in the two clusters.
1067: ! For each atom in each structure, the closest other atom is identified. The distance to these closest atoms is averaged across1067: ! For each atom in each structure, the closest other atom is identified. The distance to these closest atoms is averaged across
1068: ! all atoms and both structures.1068: ! all atoms and both structures.
1069: 1069: 
1070: IMPLICIT NONE1070: IMPLICIT NONE
1071: 1071: 
1072: INTEGER, INTENT(IN)           :: NATOMS1072: INTEGER, INTENT(IN)           :: NATOMS
1073: DOUBLE PRECISION, INTENT(IN)  :: COORDSA(3*NATOMS), COORDSB(3*NATOMS)1073: DOUBLE PRECISION, INTENT(IN)  :: COORDSA(3*NATOMS), COORDSB(3*NATOMS)
1074: DOUBLE PRECISION, INTENT(OUT) :: KWIDTH1074: DOUBLE PRECISION, INTENT(OUT) :: KWIDTH
1075: LOGICAL, INTENT(IN)           :: DEBUG 
1076: 1075: 
1077: INTEGER          :: J1, J21076: INTEGER          :: J1, J2
1078: DOUBLE PRECISION :: DIST, MIN_DIST, SUM_MINDISTS1077: DOUBLE PRECISION :: DIST, MIN_DIST, SUM_MINDISTS
1079: 1078: 
1080: SUM_MINDISTS = 0.0D01079: SUM_MINDISTS = 0.0D0
1081: 1080: 
1082: ! Find average NN distance for structure A1081: ! Find average NN distance for structure A
1083: DO J1 = 1, NATOMS  ! Find the nearest-neighbour distance of atom J11082: DO J1 = 1, NATOMS  ! Find the nearest-neighbour distance of atom J1
1084:    MIN_DIST = 1.0D101083:    MIN_DIST = 1.0D10
1085:    DO J2 = 1, NATOMS  ! Check all the neighbours of J11084:    DO J2 = 1, NATOMS  ! Check all the neighbours of J1


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0