9 subroutine reciplat(avec,bvec,omega,omegabz)
32 real(8),
intent(in) :: avec(3,3)
33 real(8),
intent(out) :: bvec(3,3),omega,omegabz
35 real(8),
parameter :: twopi=6.2831853071795864769d0
37 call r3cross(avec(:,2),avec(:,3),bvec(:,1))
38 call r3cross(avec(:,3),avec(:,1),bvec(:,2))
39 call r3cross(avec(:,1),avec(:,2),bvec(:,3))
40 t1=avec(1,1)*bvec(1,1)+avec(2,1)*bvec(2,1)+avec(3,1)*bvec(3,1)
43 if (omega < 1.d-6)
then 45 write(*,
'("Error(reciplat) omega too small : ",G18.10)') omega
46 write(*,
'(" Lattice vectors may be collinear")')
50 bvec(:,:)=(twopi/t1)*bvec(:,:)
52 omegabz=(twopi**3)/omega
subroutine reciplat(avec, bvec, omega, omegabz)
pure subroutine r3cross(x, y, z)