1!
2! Copyright (C) 1996-2016	The SIESTA group
3!  This file is distributed under the terms of the
4!  GNU General Public License: see COPYING in the top directory
5!  or http://www.gnu.org/copyleft/gpl.txt.
6! See Docs/Contributors.txt for a list of contributors.
7!
8C $Id: dismin.f,v 1.4 2000/01/11 10:13:50 jgale Exp $
9
10      DOUBLE PRECISION FUNCTION DISMIN( CELL, X )
11
12C FINDS THE MINIMUM DISTANCE FROM A PARALLELEPIPED CELL TO A POINT X.
13C THIS IS A PROVISIONAL VERSION WICH RETURNS ONLY AN APPROXIMATE
14C VALUE: THE MINIMUM DISTANCE TO A FINITE SET OF POINTS ON THE SURFACE,
15C WHERE PARAMETER N BELOW DETERMINES HOW MANY POINTS ARE USED.
16C WRITTEN BY J.M.SOLER. NOV'96.
17
18      IMPLICIT NONE
19      INTEGER I, I1, I2, I3, N
20      DOUBLE PRECISION CELL(3,3), X(3), DX, D2, D2MIN
21      PARAMETER ( N = 1 )
22
23      D2MIN = 1.D30
24      DO I1 = 0,N
25        DO I2 = 0,N
26          DO I3 = 0,N
27            IF ( I1.EQ.0 .OR. I1.EQ.N .OR.
28     .           I2.EQ.0 .OR. I2.EQ.N .OR.
29     .           I3.EQ.0 .OR. I3.EQ.N      ) THEN
30              D2 = 0.0D0
31              DO I = 1,3
32                DX = (CELL(I,1)*I1+CELL(I,2)*I2+CELL(I,3)*I3)/N
33                DX = DX - X(I)
34                D2 = D2 + DX * DX
35              ENDDO
36              D2MIN = MIN( D2, D2MIN )
37            ENDIF
38          ENDDO
39        ENDDO
40      ENDDO
41      DISMIN = SQRT( D2MIN )
42      END
43
44