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: reclat.f,v 1.3 2004/06/10 16:17:00 wdpgaara Exp $
9
10      SUBROUTINE RECLAT (A,B,IOPT)
11
12C  CALCULATES RECIPROCAL LATTICE VECTORS. THEIR PRODUCT WITH DIRECT
13C  LATTICE VECTORS IS 1 IF IOPT=0 OR 2*PI IF IOPT=1
14
15      integer :: iopt, i
16      DOUBLE PRECISION A(3,3),B(3,3), pi, c , ci
17      PI=ACOS(-1.D0)
18      B(1,1)=A(2,2)*A(3,3)-A(3,2)*A(2,3)
19      B(2,1)=A(3,2)*A(1,3)-A(1,2)*A(3,3)
20      B(3,1)=A(1,2)*A(2,3)-A(2,2)*A(1,3)
21      B(1,2)=A(2,3)*A(3,1)-A(3,3)*A(2,1)
22      B(2,2)=A(3,3)*A(1,1)-A(1,3)*A(3,1)
23      B(3,2)=A(1,3)*A(2,1)-A(2,3)*A(1,1)
24      B(1,3)=A(2,1)*A(3,2)-A(3,1)*A(2,2)
25      B(2,3)=A(3,1)*A(1,2)-A(1,1)*A(3,2)
26      B(3,3)=A(1,1)*A(2,2)-A(2,1)*A(1,2)
27      C=1.D0
28      IF (IOPT.EQ.1) C=2.D0*PI
29      DO 20 I=1,3
30         CI=C/(A(1,I)*B(1,I)+A(2,I)*B(2,I)+A(3,I)*B(3,I))
31         B(1,I)=B(1,I)*CI
32         B(2,I)=B(2,I)*CI
33         B(3,I)=B(3,I)*CI
34  20  CONTINUE
35      END
36