hdiff output

r31427/cppneb_wrapper.f90 2017-01-21 10:34:54.934250000 +0000 r31426/cppneb_wrapper.f90 2017-01-21 10:34:55.222250000 +0000
  2: contains  2: contains
  3: function get_energy_gradient(ncoords, coords, grad, userdata) result(energy) bind(c)  3: function get_energy_gradient(ncoords, coords, grad, userdata) result(energy) bind(c)
  4:     use iso_c_binding  4:     use iso_c_binding
  5:     implicit none  5:     implicit none
  6:     integer(c_int), value, intent(in) :: ncoords  6:     integer(c_int), value, intent(in) :: ncoords
  7:     real(c_double), intent(in) :: coords(ncoords)  7:     real(c_double), intent(in) :: coords(ncoords)
  8:     real(c_double), intent(out) :: grad(ncoords)   8:     real(c_double), intent(out) :: grad(ncoords) 
  9:     type(c_ptr) :: userdata  9:     type(c_ptr) :: userdata
 10:     real(c_double) :: energy 10:     real(c_double) :: energy
 11:     real(c_double) :: rms 11:     real(c_double) :: rms
 12:     real(c_double) :: dummy 
 13:  12: 
 14:     grad = 0.0 13:     grad = 0.0
 15:     energy = 0.0 14:     energy = 0.0
 16:  15: 
 17:     call potential(coords,energy,grad,.true.,.false.,rms,.false.,.false.) 16:     call potential(coords,energy,grad,.true.,.false.,rms,.false.,.false.)
 18:     ! Warning. There seems to be a compiler bug here: the energy is calculated correctly but doesn't get passed 
 19:     ! down to the C++ end. I'll investigate stopping this by lowering the level of optimisation, but for the moment 
 20:     ! it seems that the following write statement is enough to correct the behaviour. 
 21:     write(*,*) "Called potential from C++, energy ", energy 
 22:     !                                 !gtest  stest       ptest  boxtest!! 17:     !                                 !gtest  stest       ptest  boxtest!!
 23:     ! first, but not second derivatives; no printing; is boxtest, ever? 18:     ! first, but not second derivatives; no printing; is boxtest, ever?
 24:  19: 
 25: end function 20: end function
 26: end module cpp_potential 21: end module cpp_potential
 27:  22: 
 28: module cpp_distance 23: module cpp_distance
 29: use genrigid, only: rigidinit, rb_distance, degfreedoms 24: use genrigid, only: rigidinit, rb_distance, degfreedoms
 30: contains 25: contains
 31: function get_distance(ncoords, left, right, gradient_left, gradient_right) result(distance) bind(c) 26: function get_distance(ncoords, left, right, gradient_left, gradient_right) result(distance) bind(c)
 88:     if(debug) then ! Set the lbfgs parameters to maximum information printed out 83:     if(debug) then ! Set the lbfgs parameters to maximum information printed out
 89:         verbosity = 2 84:         verbosity = 2
 90:         iprint = 5 85:         iprint = 5
 91:     endif 86:     endif
 92:  87: 
 93:     ! set up the band 88:     ! set up the band
 94:     call neb_setup(c_funloc(get_energy_gradient), c_funloc(get_distance), c_null_ptr) 89:     call neb_setup(c_funloc(get_energy_gradient), c_funloc(get_distance), c_null_ptr)
 95:     call neb_initialize_path(nimages+2, ncoords) !sn402 changed 90:     call neb_initialize_path(nimages+2, ncoords) !sn402 changed
 96: !    call neb_initialize_path(nimages, ncoords) 91: !    call neb_initialize_path(nimages, ncoords)
 97:  92: 
 98:     ! load images into band - including the fixed configurations at the start and end of the band 93: 
  94:     ! load images into band
 99:     do i=0,nimages+1  ! sn402 changed 95:     do i=0,nimages+1  ! sn402 changed
100: !     do i=0,nimages-1 96: !     do i=0,nimages-1
101: !        i2=ncoords*(i+1)  ! sn402 changed 97: !        i2=ncoords*(i+1)  ! sn402 changed
102:         i2=ncoords*i 98:         i2=ncoords*i
103:         call neb_set_image_coords(i,ncoords,xyz(i2+1:i2+ncoords)) 99:         call neb_set_image_coords(i,ncoords,xyz(i2+1:i2+ncoords))
104:     enddo100:     enddo
105: 101: 
106:     ! begin102:     ! begin
107: !    call neb_start()103: !    call neb_start()
108:     call neb_start_with_lbfgs(rmstol, nebmupdate, nebdguess)104:     call neb_start_with_lbfgs(rmstol, nebmupdate, nebdguess)


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0