The Elk Code
symmetry.f90
Go to the documentation of this file.
1 
2 ! Copyright (C) 2013 J. K. Dewhurst, S. Sharma and E. K. U. Gross.
3 ! This file is distributed under the terms of the GNU General Public License.
4 ! See the file COPYING for license details.
5 
6 subroutine symmetry
7 use modmain
8 use modvars
9 implicit none
10 ! inverse of the lattice vector matrix
11 call r3minv(avec,ainv)
12 ! find Bravais lattice symmetries
13 call findsymlat
14 ! use only the identity if required
15 if (symtype == 0) nsymlat=1
16 ! find the crystal symmetries and shift atomic positions if required
17 call findsymcrys
18 ! find the site symmetries
19 call findsymsite
20 ! check if fixed spin moments are invariant under the symmetry group
21 call checkfsm
22 ! check if real symmetric first-variational eigen solver can be used
23 if (.not.tsyminv) tefvr=.false.
24 ! write to VARIABLES.OUT
25 if (wrtvars) then
26  call writevars('nsymlat',iv=nsymlat)
27  call writevars('symlat',nv=9*nsymlat,iva=symlat)
28  call writevars('nsymcrys',iv=nsymcrys)
29  call writevars('vtlsymc',nv=3*nsymcrys,rva=vtlsymc)
30  call writevars('lsplsymc',nv=nsymcrys,iva=lsplsymc)
31  call writevars('lspnsymc',nv=nsymcrys,iva=lspnsymc)
32 end if
33 end subroutine
34 
integer, dimension(maxsymcrys) lspnsymc
Definition: modmain.f90:366
real(8), dimension(3, 3) ainv
Definition: modmain.f90:14
integer nsymcrys
Definition: modmain.f90:358
subroutine r3minv(a, b)
Definition: r3minv.f90:10
integer, dimension(3, 3, 48) symlat
Definition: modmain.f90:344
real(8), dimension(3, maxsymcrys) vtlsymc
Definition: modmain.f90:360
integer symtype
Definition: modmain.f90:340
logical tefvr
Definition: modmain.f90:870
subroutine findsymcrys
Definition: findsymcrys.f90:10
logical tsyminv
Definition: modmain.f90:354
subroutine symmetry
Definition: symmetry.f90:7
subroutine findsymlat
Definition: findsymlat.f90:10
integer, dimension(maxsymcrys) lsplsymc
Definition: modmain.f90:364
integer nsymlat
Definition: modmain.f90:342
real(8), dimension(3, 3) avec
Definition: modmain.f90:12
logical wrtvars
Definition: modvars.f90:9
subroutine checkfsm
Definition: checkfsm.f90:7
subroutine findsymsite
Definition: findsymsite.f90:7
subroutine writevars(vname, n1, n2, n3, n4, n5, n6, nv, iv, iva, rv, rva, zv, zva, sv, sva)
Definition: modvars.f90:16