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