1!-------------------------------------------------------------------------------
2!
3!   rho2cd.f90
4!   converts BerkeleyGW file RHO to PARATEC file CD
5!   written by M. Jain (May 2010)
6!
7!-------------------------------------------------------------------------------
8
9#include "f_defs.h"
10
11program rho2cd
12
13  use global_m
14  use wfn_rho_vxc_io_m
15  implicit none
16
17  character(len=24) :: bdate
18  character(len=8) :: btime
19  character(len=11) :: cdate
20  character(len=14) :: stime
21
22  type(kpoints) :: kp
23  type(gspace) :: gvec
24  type(symmetry) :: syms
25  type(crystal) :: crys
26
27  integer :: ig, is
28  SCALAR, allocatable :: rho(:,:)
29
30  integer :: iflavor
31  character(len=3) :: sheader
32
33  call open_file(95,file='RHO',form='unformatted',status='old')
34  call open_file(21,file='CD',form='unformatted',status='replace')
35
36  write(6,*) 'Opening RHO'
37
38  sheader = 'RHO'
39  iflavor = 0
40  call read_binary_header_type(95, sheader, iflavor, kp, gvec, syms, crys, warn = .false.)
41
42  SAFE_ALLOCATE(gvec%components, (3, gvec%ng))
43  call read_binary_gvectors(95, gvec%ng, gvec%ng, gvec%components)
44
45  SAFE_ALLOCATE(rho, (gvec%ng, kp%nspin))
46  call read_binary_data(95, gvec%ng, gvec%ng, kp%nspin, rho)
47
48  call date_time(cdate, stime)
49  write(bdate, '(a11,13x)') cdate
50  write(btime, '(a8)') stime(1:8)
51  write(21) bdate, btime
52
53  write(21) 1, kp%nspin
54
55  do ig = 1, gvec%ng
56    write(21) gvec%components(1:3, ig)
57    write(21) (COMPLEXIFY(rho(ig, is)), is = 1, kp%nspin)
58  enddo
59  write(21) -1234567, 0, 0
60  ! the purpose of this last line is a profound mystery
61
62  call dealloc_header_type(sheader, crys, kp)
63  SAFE_DEALLOCATE_P(gvec%components)
64  SAFE_DEALLOCATE(rho)
65
66  call close_file(95)
67  call close_file(21)
68
69end program rho2cd
70