1c     ==================================================
2c     == Delocalized internals optimizer main routine ==
3c     ==================================================
4c
5      subroutine deloc(periodic, natom, ndim,
6     &                 coord_in, grad_in, covrad,
7     &                 converged, ierror)
8c
9      implicit none
10c
11c     == general includes ==
12#include "stdio.fh"
13c
14c     == optimizer specific includes ==
15c
16      logical periodic           ! periodic/molecular flag
17      integer natom, ndim        ! number of atoms and dimensions
18      double precision coord_in(*)  ! incoming coordinates
19      double precision grad_in(*)   ! incoming gradients
20      double precision covrad(*)    ! covalent radii
21      logical converged             ! convergence flag
22      integer ierror             ! return status (0: success, 1: failure)
23c
24      logical hasconverged
25      external hasconverged
26c
27      integer i
28c
29c     == check convergence on entry ==
30      converged = .false.
31      ierror = 0
32      if (hasconverged(ndim,grad_in)) then
33         converged = .true.
34         return
35      end if
36c
37c     == test print out ==
38      write(luout,*) "== natom ==",natom
39      write(luout,*) "== coordinates =="
40      do i = 1,natom
41       write(luout,*) coord_in(3*i-2),coord_in(3*i-1),coord_in(3*i)
42      end do
43      write(luout,*) "== gradients =="
44      do i = 1,natom
45       write(luout,*) grad_in(3*i-2),grad_in(3*i-1),grad_in(3*i)
46      end do
47      write(luout,*) "== covalent radii =="
48      do i = 1,natom
49       write(luout,*) i, covrad(i)
50      end do
51c
52      return
53      end
54c $Id$
55