The Elk Code
 
Loading...
Searching...
No Matches
writesym.f90
Go to the documentation of this file.
1
2! Copyright (C) 2002-2005 J. K. Dewhurst, S. Sharma and C. Ambrosch-Draxl.
3! This file is distributed under the terms of the GNU General Public License.
4! See the file COPYING for license details.
5
6!BOP
7! !ROUTINE: writesym
8! !INTERFACE:
9subroutine writesym
10! !USES:
11use modmain
12! !DESCRIPTION:
13! Outputs the Bravais, crystal and site symmetry matrices to files
14! {\tt SYMLAT.OUT}, {\tt SYMCRYS.OUT} and {\tt SYMSITE.OUT}, respectively.
15! Also writes out equivalent atoms and related crystal symmetries to
16! {\tt EQATOMS.OUT}.
17!
18! !REVISION HISTORY:
19! Created October 2002 (JKD)
20!EOP
21!BOC
22implicit none
23! local variables
24integer is,ia,ja,ias,i
25integer isym,lspl,lspn
26! output the Bravais lattice symmetries
27open(50,file='SYMLAT'//trim(filext),form='FORMATTED',action='WRITE')
28write(50,'(I4," : nsymlat")') nsymlat
29do isym=1,nsymlat
30 write(50,*)
31 write(50,'(I4)') isym
32 do i=1,3
33 write(50,'(3I4)') symlat(i,:,isym)
34 end do
35end do
36close(50)
37! output the crystal symmetries
38open(50,file='SYMCRYS'//trim(filext),form='FORMATTED',action='WRITE')
39write(50,*)
40write(50,'("(translation vectors and rotation matrices are in lattice &
41 &coordinates)")')
42write(50,*)
43write(50,'(I4," : nsymcrys")') nsymcrys
44do isym=1,nsymcrys
45 write(50,*)
46 write(50,'("Crystal symmetry : ",I4)') isym
47 write(50,'(" spatial translation :")')
48 write(50,'(3G18.10)') vtlsymc(:,isym)
49 write(50,'(" spatial rotation :")')
50 lspl=lsplsymc(isym)
51 do i=1,3
52 write(50,'(3I4)') symlat(i,:,lspl)
53 end do
54 write(50,'(" global spin rotation :")')
55 lspn=lspnsymc(isym)
56 do i=1,3
57 write(50,'(3I4)') symlat(i,:,lspn)
58 end do
59end do
60close(50)
61! output the site symmetries
62open(50,file='SYMSITE'//trim(filext),form='FORMATTED',action='WRITE')
63write(50,*)
64write(50,'("(rotation matrices are in lattice coordinates)")')
65do is=1,nspecies
66 do ia=1,natoms(is)
67 ias=idxas(ia,is)
68 write(50,*)
69 write(50,*)
70 write(50,'("Species : ",I4," (",A,"), atom : ",I4)') is,trim(spsymb(is)),ia
71 write(50,'(I4," : nsymsite")') nsymsite(ias)
72 do isym=1,nsymsite(ias)
73 write(50,*)
74 write(50,'(" Site symmetry : ",I4)') isym
75 write(50,'(" spatial rotation :")')
76 lspl=lsplsyms(isym,ias)
77 do i=1,3
78 write(50,'(3I4)') symlat(i,:,lspl)
79 end do
80 write(50,'(" global spin rotation :")')
81 lspn=lspnsyms(isym,ias)
82 do i=1,3
83 write(50,'(3I4)') symlat(i,:,lspn)
84 end do
85 end do
86 end do
87end do
88close(50)
89! output the equivalent atoms and related symmetries
90open(50,file='EQATOMS'//trim(filext),form='FORMATTED',action='WRITE')
91do is=1,nspecies
92 write(50,*)
93 write(50,'("Species : ",I4," (",A,")")') is,trim(spsymb(is))
94 do ia=1,natoms(is)
95 write(50,'(" atom ",I4," is equivalent to atom(s)")') ia
96 i=0
97 do ja=1,natoms(is)
98 if (eqatoms(ia,ja,is)) then
99 if ((i > 0).and.(mod(i,20) == 0)) write(50,*)
100 write(50,'(I4)',advance='NO') ja
101 i=i+1
102 end if
103 end do
104 write(50,*)
105 end do
106end do
107close(50)
108end subroutine
109!EOC
110
integer nsymlat
Definition modmain.f90:342
integer, dimension(maxspecies) natoms
Definition modmain.f90:36
character(256) filext
Definition modmain.f90:1300
integer, dimension(maxatoms, maxspecies) idxas
Definition modmain.f90:42
integer, dimension(:,:), allocatable lspnsyms
Definition modmain.f90:378
integer, dimension(:), allocatable nsymsite
Definition modmain.f90:374
integer, dimension(:,:), allocatable lsplsyms
Definition modmain.f90:376
real(8), dimension(3, maxsymcrys) vtlsymc
Definition modmain.f90:360
integer, dimension(maxsymcrys) lspnsymc
Definition modmain.f90:366
character(64), dimension(maxspecies) spsymb
Definition modmain.f90:78
logical, dimension(:,:,:), allocatable eqatoms
Definition modmain.f90:370
integer nsymcrys
Definition modmain.f90:358
integer, dimension(3, 3, 48) symlat
Definition modmain.f90:344
integer nspecies
Definition modmain.f90:34
integer, dimension(maxsymcrys) lsplsymc
Definition modmain.f90:364
subroutine writesym
Definition writesym.f90:10