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