File: simple.f90

package info (click to toggle)
espresso 6.7-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 311,068 kB
  • sloc: f90: 447,429; ansic: 52,566; sh: 40,631; xml: 37,561; tcl: 20,077; lisp: 5,923; makefile: 4,503; python: 4,379; perl: 1,219; cpp: 761; fortran: 618; java: 568; awk: 128
file content (151 lines) | stat: -rw-r--r-- 4,972 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
!-----------------------------------------------------------------------
program simple
  !!-----------------------------------------------------------------------
  !! 
  !! input:  namelist "&inputsimple", with variables
  !!   prefix       prefix of input files saved by program pwscf
  !!   outdir       temporary directory where files resides
  !!    
  use io_files,  ONLY : prefix, tmp_dir
  use io_files,  ONLY : psfile, pseudo_dir
  use io_global, ONLY : stdout, ionode, ionode_id
  USE mp_global, ONLY: mp_startup
  USE mp_pools, ONLY : kunit
  use mp_world, ONLY: mpime, world_comm 
  USE environment,   ONLY: environment_start
  USE mp, ONLY : mp_bcast
  use ldaU, ONLY : lda_plus_u
  use scf, only : vrs, vltot, v, kedtau
  USE fft_base,             ONLY : dfftp
  use pwcom, only :  nspin
  use uspp, ONLY : okvan
  use realus, ONLY : generate_qpointlist
  USE wannier_gw, ONLY : num_nbndv 
  USE gvect, ONLY : ngm
  USE gvecs, ONLY : doublegrid
  USE constants, ONLY : BOHR_RADIUS_SI
  USE cell_base,        ONLY : alat
  USE input_simple, ONLY : num_val,  num_cond, s_bands, deallocate_simple,s_product,&
                       &l_truncated_coulomb,truncation_radius, allocate_simple, &
                       &nkpoints,numpw,l_debug,n_debug,w_type,epsm,lambdam, &
                       &nonlocal_commutator , calc_mode, n_shrink
  USE pwcom, ONLY : igk_k
  !
  IMPLICIT NONE
  CHARACTER(len=9) :: code = 'SIMPLE'
  INTEGER :: ios, kunittmp
  CHARACTER(LEN=256), EXTERNAL :: trimcheck
  CHARACTER(len=200) :: pp_file
  LOGICAL :: uspp_spsi, ascii, single_file, raw
  LOGICAL :: exst
  INTEGER, EXTERNAL :: find_free_unit
  CHARACTER(len=256) :: prefix_nc 
  INTEGER :: nglobals
  LOGICAL :: l_dipols
  CHARACTER(LEN=256) :: outdir
  !
  !
  NAMELIST /inputsimple/ prefix,outdir,num_nbndv,num_val,num_cond,s_bands, &
       & s_product,l_truncated_coulomb,truncation_radius,nkpoints,numpw,&
       & l_debug,n_debug,w_type,epsm,lambdam, nonlocal_commutator,&
       & calc_mode, n_shrink
  !
  CALL mp_startup ( )
  CALL environment_start ( code )
  !
  CALL start_clock('simple')
  !
  n_shrink=1
  prefix='export'
  CALL get_environment_variable( 'ESPRESSO_TMPDIR', outdir )
  IF ( TRIM( outdir ) == ' ' ) outdir = './'
  IF ( ionode ) THEN
     CALL input_from_file ( )
     READ(5,inputsimple,IOSTAT=ios)
     IF (ios /= 0) CALL errore ('SIMPLE', 'reading inputsimple namelist', ABS(ios) )
  ENDIF
  !
  tmp_dir = trimcheck( outdir )
  CALL mp_bcast( outdir, ionode_id, world_comm  )
  CALL mp_bcast( tmp_dir, ionode_id , world_comm )
  CALL mp_bcast( prefix, ionode_id, world_comm  )
  CALL mp_bcast( num_nbndv, ionode_id , world_comm )
  CALL mp_bcast(num_val, ionode_id, world_comm )
  CALL mp_bcast(num_cond, ionode_id, world_comm )
  CALL mp_bcast(s_bands, ionode_id, world_comm )
  CALL mp_bcast(s_product, ionode_id, world_comm)
  CALL mp_bcast(l_truncated_coulomb, ionode_id, world_comm)
  CALL mp_bcast(truncation_radius, ionode_id, world_comm )
  CALL mp_bcast(nkpoints, ionode_id, world_comm)
  CALL mp_bcast(numpw, ionode_id, world_comm)
  CALL mp_bcast(l_debug, ionode_id, world_comm)
  CALL mp_bcast(n_debug,  ionode_id, world_comm)
  CALL mp_bcast(w_type,  ionode_id, world_comm)
  CALL mp_bcast(epsm,  ionode_id, world_comm)
  CALL mp_bcast(lambdam,  ionode_id, world_comm)
  CALL mp_bcast(nonlocal_commutator,  ionode_id, world_comm)
  CALL mp_bcast(calc_mode,  ionode_id, world_comm)
  CALL mp_bcast(n_shrink, ionode_id, world_comm)
  !
  IF (.not.l_truncated_coulomb .and. numpw/=0) numpw=numpw+1
  !
  CALL read_file
  !
  CALL openfile_school
  !
#if defined __MPI
  kunittmp = kunit
#else
  kunittmp = 1
#endif
  !
  pp_file= ' '
  uspp_spsi = .FALSE.
  ascii = .FALSE.
  single_file = .FALSE.
  raw = .FALSE.
  !
  CALL read_export(pp_file,kunittmp,uspp_spsi, ascii, single_file, raw)
  !
  CALL summary()
  !
  CALL print_ks_energies()
  !
  IF (lda_plus_u) THEN
    CALL init_ns()
  ENDIF
  !
  CALL set_vrs(vrs, vltot, v%of_r, kedtau, v%kin_r, dfftp%nnr, nspin, doublegrid )
  !
  IF ( okvan) CALL generate_qpointlist()
  !
  CALL allocate_simple
  !
  CALL wfc_basis
  !
  IF (calc_mode==0) THEN  ! BSE calculation
      WRITE(stdout,*) '***********************************************************'
      WRITE(stdout,*) 'Preparing for subsequent BSE calculation (for simple_bse.x)'
      WRITE(stdout,*) '***********************************************************'
      CALL product_basis
      CALL v_product
      CALL epe
  ELSEIF(calc_mode==1) then ! IP calculation
      WRITE(stdout,*) '*********************************************************'
      WRITE(stdout,*) 'Preparing for subsequent IP calculation (for simple_ip.x)'
      WRITE(stdout,*) '*********************************************************'
      CALL khamiltonian
  ENDIF
  CALL deallocate_simple
  !
  CALL stop_clock('simple')
  CALL print_clock('optimal_basis')
  CALL print_clock('simple')
  !
  CALL stop_pp
  STOP
  !
END PROGRAM simple