Merge branch 'develop' into gpu-develop

This commit is contained in:
Pietro Bonfa 2020-11-30 10:50:14 +01:00
commit 832ee20aba
65 changed files with 2499 additions and 1332 deletions

View File

@ -1,4 +1,4 @@
VERSION = 6.7
VERSION := $(shell awk -F\' '/version_number/{print $$2}' ../../include/qe_version.h )
HELPDOC = ../../dev-tools/helpdoc -version $(VERSION)
LATEX = pdflatex
LATEX2HTML = latex2html

View File

@ -285,10 +285,10 @@ CONTAINS
& The exx_me_rcut_self should be set smaller than half the minimum cell length',1)
!
IF(fftx_ntgrp(dffts).GT.1) CALL errore('exx_module','EXX calculation error : &
& taskgroup (-ntg) > 1 needed for zeta>1 calculations currently broken and will&
& be fixed in an up-coming major update. Please contact Robert A. DiStasio Jr.&
& taskgroup (-ntg) > 1 needed for zeta>1 calculations currently unavailable and will&
& become available in the next major update. Please contact Robert A. DiStasio Jr.&
& (distasio@cornell.edu) if you should need assistance reverting to an earlier&
& version with working taskgroup supoprt.',1)
& version with working taskgroup support.',1)
!
IF(nproc_image.GE.nbsp) THEN
!

View File

@ -4,6 +4,12 @@ New in 6.7 version:
* In vc-relax with Hubbard corrections, the final SCF calculation is done by
reading atomic occupations from file produced during the vc-relax
(rather then recomputing them from scratch).
* EPW:
(1) ZG package to generate special displacements for first-principles non-perturbative calculations
at finite temperatures [Marios Zacharias and Feliciano Giustino, Phys. Rev. Research 2, 013357, (2020)].
(2) Plotting of Fermi surface.
For the full list of new features, bug fixes, and changes leading to backward incompatibility issues,
please visit the Releases page of the EPW documentation site [https://docs.epw-code.org/doc/Releases.html].
Fixed in 6.7 version:
* Some linkers yield "missing references to ddot_" in libbeef

View File

@ -55,17 +55,20 @@ STEPS for generating the "ZG-displacement" for the calculation of temperature-de
temperature dependent properties. For help, please see the example folder by "tar -xvf example.tar.gz".
In file "example/silicon/ZG_displacement_generation/inputs/ZG_444.in" we show the example for
constructing a 4x4x4 ZG-configuration. One could potentially generate any supercell size
by simply changing "dimx","dimy","dimz", and the list of q-points (see below).
by simply changing "dimx","dimy","dimz", and the list of q-points (optional, see below).
"ZG.in" has the standard format as a "matdyn.in" file for Quantum Espresso.
Here we use the following input parameters:
---------------------------------------------------------------------------------------
i) "ZG_conf" : Logical flag that enables the creation of the ZG-displacement.
(default .false.)
(default .true.)
"T" : Real number indicating the temperature at which the calculations will be performed.
"T" essentially defines the amplitude of the normal coordinates.
(default 0.00)
"dimx","dimy","dimz" : Integers corresponding to the dimensionality of the supercell.
(default 0,0,0)
"dimx","dimy","dimz" : Integers corresponding to the dimensionality of the supercell i.e.:
size of supercell will be [dimx * a(1), dimy * a(2), dimz * a(3)],
where a(1), a(2), a(3) are the lattice vectors of the unit cell used
to compute the phonons.
(default 0, 0, 0)
"atm_zg(1), etc.." : String describing the element of each atomic species
(default "Element")
"synch" : Logical flag that enables the synchronization of the modes.
@ -86,7 +89,7 @@ STEPS for generating the "ZG-displacement" for the calculation of temperature-de
(ii) only single phonon displacements are of interest (see below)
(default .true.)
"threshold" : Real number indicating the error at which the algorithm stops while it's
looking for possible combinations of signs. Once this limit is reached
looking for possible combinations of signs. Once this limit is reached,
the ZG-displacement is constructed. The threshold is usually chosen
to be less than 5% of the diagonal terms, i.e. those terms that contribute
to the calculation of temperature-dependent properties.
@ -96,16 +99,22 @@ STEPS for generating the "ZG-displacement" for the calculation of temperature-de
"single_phonon_displ": Logical flag that allows to displace the nuclei along single phonon modes.
Use output configurations to compute electron-phonon matrix elements with a direct
supercell calculation. Set the displacement to the zero point by "T = 0".
This generates the output files: "single_phonon-displacements.dat" and
"single_phonon-velocities.dat".
This finite displacement should carry precisely the effect of diagonal elements of [g(q)+g(-q)].
Output files: "single_phonon-displacements.dat" and "single_phonon-velocities.dat".
(default .false.)
"qlist_AB.txt" : This file containes the q-list in crystal coordinates that appears in the "ZG_444.in" example after
the input flags. It corresponds to the q-points commensurate to the supercell size. Only one
of the q-point time-reversal partners is kept for the construction of the ZG-displacement.
The calculations, for the moment, assume systems with time-reversal symmetry.
"q_external" : Logical flag that allows the use of a q-point list specified by the user in the input file.
If .false. the q-point list is specified by the supercell dimensions dimx, dimy, and dimz.
If .true. the q-point list must be provided by the user (see "qlist_AB.txt").
(default .false.)
"qlist_AB.txt" : This file contains the external q-list in crystal coordinates as in the "ZG_444.in" example,
after the input flags. It corresponds to the q-points commensurate to the supercell size.
Only one of the q-point time-reversal partners is kept for the construction of the
ZG-displacement. The calculations, for the moment, assume systems with time-reversal symmetry.
For the generation of the "qlist_AB.txt" set the q-gird in file
"example/silicon/input/qlist.in" and run "../../../src/create_qlist.x < qlist.in > qlist.out ".
Paste the output of "qlist_AB.txt" to "ZG.in" after namelist &input.
"example/silicon/input/qlist.in" and run "../../../src/create_qlist.x < qlist.in > qlist.out".
One can modify the "create_qlist.f90" to generate a different path for consecutive q-points.
Paste the output of "qlist_AB.txt" to "ZG.in" after namelist &input. Set the flag
q_external = .true. for the code to read the list.
ii) To generate the ZG-displacement run "/path_to_your_espresso/bin/ZG.x <ZG_444.in> ZG_444.out".
This generates three output files: the "equil_pos.txt", "ZG-configuration.dat" and "ZG-velocities.dat".
@ -161,7 +170,6 @@ Steps:
"JDOS_Gaus.x" located in the "src/JDOS" folder. Command: "/path_to/JDOS_Gaus.x <JDOS_Gaus.in > JDOS_Gaus.out".
For extracting the band gap from the joint-density of states follow the procedure in Ref.[Phys. Rev. B 94, 075125, (2016)].
5. Compare your results with the data in the directory 'example/silicon/JDOS/outputs/333'.
Gnuplot commands are aslo given to facilitate comparison.

View File

@ -73,13 +73,15 @@ PROGRAM ZG
! supplied in input (default)
! amass masses of atoms in the supercell (a.m.u.), one per atom type
! (default: use masses read from file flfrc)
! "q_in_band_form" and "q_in_cryst_coord" meaningful if "q_external"
! (see below) is set to .true.
! q_in_band_form IF .TRUE. the q points are given in band form:
! Only the first and last point of one or more lines
! are given. See below. (default: .FALSE.).
! q_in_cryst_coord IF .TRUE. input q points are in crystalline
! coordinates (default: .FALSE.)
! loto_2d set to .true. to activate two-dimensional treatment of LO-TO
! splitting.
! loto_2d set to .true. to activate two-dimensional treatment of LO-TO
! siplitting.
!
! IF (q_in_band_form) THEN
! nq ! number of q points
@ -101,7 +103,7 @@ PROGRAM ZG
! Input cards to control "ZG_configuration" subroutine:
!
! "ZG_conf" : Logical flag that enables the creation of the ZG-displacement.
! (default .false.)
! (default .true.)
! "T" : Real number indicating the temperature at which the calculations will be performed.
! "T" essentially defines the amplitude of the normal coordinates.
! (default 0.00)
@ -137,34 +139,42 @@ PROGRAM ZG
! "single_phonon_displ": Logical flag that allows to displace the nuclei along single phonon modes.
! Use output configurations to compute electron-phonon matrix elements with a direct
! supercell calculation. Set the displacement to the zero point by "T = 0".
! This generates the output files: "single_phonon-displacements.dat" and
! This finite displacement should carry precisely the effect of diagonal elements of [g(q)+g(-q)].
! Output files: "single_phonon-displacements.dat" and
! "single_phonon-velocities.dat".
! (default .false.)
! "qlist_AB.txt" : This file containes the q-list in crystal coordinates that appears in the "ZG_444.in" example after
! the input flags. It corresponds to the q-points commensurate to the supercell size. Only one
! of the q-point time-reversal partners is kept for the construction of the ZG-displacement.
! The calculations, for the moment, assume systems with time-reversal symmetry.
! "q_external" : Logical flag that allows the use of a q-point list specified by the user in the input file.
! If .false. the q-point list is specified by the supercell dimensions dimx, dimy, and dimz.
! If .false. any q-point list after the input flags is ignored.
! If .true. the q-point list must be provided by the user (see "qlist_AB.txt").
! (default .false.)
! "qlist_AB.txt" : This file contains the external q-list in crystal coordinates as in the "ZG_444.in" example,
! after the input flags. It corresponds to the q-points commensurate to the supercell size.
! Only one of the q-point time-reversal partners is kept for the construction of the
! ZG-displacement. The calculations, for the moment, assume systems with time-reversal symmetry.
! For the generation of the "qlist_AB.txt" set the q-gird in file
! "example/silicon/input/qlist.in" and run "../../../src/create_qlist.x < qlist.in > qlist.out ".
! Paste the output of "qlist_AB.txt" to "ZG.in" after namelist &input.
! "example/silicon/input/qlist.in" and run "../../../src/create_qlist.x < qlist.in > qlist.out".
! One can modify the "create_qlist.f90" to generate a different path for consecutive q-points.
! Paste the output of "qlist_AB.txt" to "ZG.in" after namelist &input. Set the flag
! q_external = .true. for the code to read the list.
!
USE kinds, ONLY : DP
USE mp, ONLY : mp_bcast
USE mp_world, ONLY : world_comm
USE mp_global, ONLY : mp_startup, mp_global_end
USE environment, ONLY : environment_start, environment_end
USE io_global, ONLY : ionode, ionode_id, stdout
USE io_dyn_mat, ONLY : read_dyn_mat_param, read_dyn_mat_header, &
read_ifc_param, read_ifc
USE cell_base, ONLY : at, bg, celldm
USE constants, ONLY : RY_TO_THZ, RY_TO_CMM1, amu_ry
USE symm_base, ONLY : set_sym
USE kinds, ONLY : DP
USE mp, ONLY : mp_bcast
USE mp_world, ONLY : world_comm
USE mp_global, ONLY : mp_startup, mp_global_end
USE environment, ONLY : environment_start, environment_end
USE io_global, ONLY : ionode, ionode_id, stdout
USE io_dyn_mat, ONLY : read_dyn_mat_param, read_dyn_mat_header, &
read_ifc_param, read_ifc
USE cell_base, ONLY : at, bg, celldm
USE constants, ONLY : RY_TO_THZ, RY_TO_CMM1, amu_ry
USE symm_base, ONLY : set_sym
USE rap_point_group, ONLY : code_group
USE bz_form, ONLY : transform_label_coord
USE parser, ONLY : read_line
USE rigid, ONLY : dyndiag, nonanal, nonanal_ifc
USE bz_form, ONLY : transform_label_coord
USE parser, ONLY : read_line
USE rigid, ONLY : dyndiag, nonanal, nonanal_ifc
USE ifconstants, ONLY : frc, atm, zeu, tau_blk, ityp_blk, m_loc
USE ifconstants, ONLY : frc, atm, zeu, tau_blk, ityp_blk, m_loc
!
IMPLICIT NONE
!
@ -204,13 +214,12 @@ PROGRAM ZG
REAL(DP) :: delta
REAL(DP), ALLOCATABLE :: xqaux(:,:)
INTEGER, ALLOCATABLE :: nqb(:)
INTEGER :: n, i, j, it, nq, nqx, na, nb, iout, nqtot, iout_dyn, iout_eig
INTEGER :: n, i, j, it, nq, nqx, na, nb, nqtot
LOGICAL, EXTERNAL :: has_xml
INTEGER, ALLOCATABLE :: num_rap_mode(:,:)
LOGICAL, ALLOCATABLE :: high_sym(:)
LOGICAL :: q_in_band_form
! .... variables for band plotting based on similarity of eigenvalues
COMPLEX(DP), ALLOCATABLE :: tmp_z(:,:)
COMPLEX(DP), ALLOCATABLE :: f_of_q(:,:,:,:)
INTEGER :: location(1), isig
CHARACTER(LEN=6) :: int_to_char
@ -221,31 +230,28 @@ PROGRAM ZG
CHARACTER(LEN=256) :: input_line, buffer
CHARACTER(LEN= 10) :: point_label_type
CHARACTER(len=80) :: k_points = 'tpiba'
! mz_b
!
COMPLEX(DP), ALLOCATABLE :: z_nq_zg(:,:,:) ! nomdes, nmodes, nq
REAL(DP), ALLOCATABLE :: q_nq_zg(:,:) ! 3, nq
LOGICAL :: ZG_conf, synch, incl_qA
LOGICAL :: ZG_conf, synch, incl_qA, q_external
LOGICAL :: compute_error, single_phonon_displ
INTEGER :: dimx, dimy, dimz, nloops
REAL(DP) :: error_thresh, T
CHARACTER(LEN=3) :: atm_zg(ntypx)
! mz_e
!
!
NAMELIST /input/ flfrc, amass, asr, at, &
& ntyp, loto_2d, &
& q_in_band_form, q_in_cryst_coord, &
& point_label_type, &
! mz_b we add the inputs for generating the ZG-configuration
& ZG_conf, dimx, dimy, dimz, nloops, error_thresh, &
NAMELIST /input/ flfrc, amass, asr, at, ntyp, loto_2d, &
& q_in_band_form, q_in_cryst_coord, point_label_type, &
! we add the inputs for generating the ZG-configuration
& ZG_conf, dimx, dimy, dimz, nloops, error_thresh, q_external, &
& compute_error, synch, atm_zg, T, incl_qA, single_phonon_displ
! ZG_conf --> IF TRUE compute the ZG_configuration
! mz_e
!
CALL mp_startup()
CALL environment_start('ZG')
!
l1= 1
l2 = 1
l2= 1
l3= 1
IF (ionode) CALL input_from_file ( )
!
@ -263,20 +269,21 @@ PROGRAM ZG
q_in_cryst_coord = .FALSE.
point_label_type='SC'
loto_2d=.FALSE.
! mz_b
ZG_conf = .FALSE.
!
ZG_conf = .TRUE.
compute_error = .TRUE.
single_phonon_displ = .FALSE.
nloops = 15000
error_thresh = 5.0E-02
T = 0
synch = .FALSE.
q_external = .FALSE.
incl_qA = .TRUE.
single_phonon_displ = .FALSE.
T = 0
error_thresh = 5.0E-02
dimx = 0
dimy = 0
dimz = 0
nloops = 15000
atm_zg = "Element"
! mz_e
!
!
!
IF (ionode) READ (5, input,IOSTAT=ios)
@ -292,25 +299,26 @@ PROGRAM ZG
CALL mp_bcast(q_in_cryst_coord, ionode_id, world_comm)
CALL mp_bcast(point_label_type, ionode_id, world_comm)
CALL mp_bcast(loto_2d,ionode_id, world_comm)
! mz_b
!
CALL mp_bcast(ZG_conf, ionode_id, world_comm)
CALL mp_bcast(compute_error, ionode_id, world_comm)
CALL mp_bcast(single_phonon_displ, ionode_id, world_comm)
CALL mp_bcast(atm_zg, ionode_id, world_comm)
CALL mp_bcast(nloops, ionode_id, world_comm)
CALL mp_bcast(error_thresh, ionode_id, world_comm)
CALL mp_bcast(T, ionode_id, world_comm)
CALL mp_bcast(synch, ionode_id, world_comm)
CALL mp_bcast(q_external, ionode_id, world_comm)
CALL mp_bcast(incl_qA, ionode_id, world_comm)
CALL mp_bcast(single_phonon_displ, ionode_id, world_comm)
CALL mp_bcast(T, ionode_id, world_comm)
CALL mp_bcast(error_thresh, ionode_id, world_comm)
CALL mp_bcast(dimx, ionode_id, world_comm)
CALL mp_bcast(dimy, ionode_id, world_comm)
CALL mp_bcast(dimz, ionode_id, world_comm)
CALL mp_bcast(nloops, ionode_id, world_comm)
CALL mp_bcast(atm_zg, ionode_id, world_comm)
!
! To check that use specify supercell dimensions
IF (ZG_conf) THEN
IF ((dimx < 1) .OR. (dimy < 1) .OR. (dimz < 1)) CALL errore('ZG', 'reading supercell size', dimx)
ENDIF
! mz_e
!
!
! read force constants
!
@ -369,17 +377,17 @@ PROGRAM ZG
IF (SUM(ABS(at(:,:))) == 0.d0) THEN
IF (l1.LE.0 .OR. l2.LE.0 .OR. l3.LE.0) CALL &
& errore ('ZG',' wrong l1,l2 or l3', 1)
at(:, 1) = at_blk(:, 1) *DBLE(l1)
at(:, 2) = at_blk(:, 2) *DBLE(l2)
at(:, 3) = at_blk(:, 3) *DBLE(l3)
at(:, 1) = at_blk(:, 1) * DBLE(l1)
at(:, 2) = at_blk(:, 2) * DBLE(l2)
at(:, 3) = at_blk(:, 3) * DBLE(l3)
ENDIF
!
CALL check_at(at, bg_blk, alat, omega)
!
! the supercell contains "nsc" times the original unit cell
!
nsc = NINT(omega/omega_blk)
IF (ABS(omega/omega_blk-nsc) > eps) &
nsc = NINT(omega / omega_blk)
IF (ABS(omega / omega_blk-nsc) > eps) &
CALL errore ('ZG', 'volume ratio not integer', 1)
!
! read/generate atomic positions of the (super)cell
@ -399,103 +407,115 @@ PROGRAM ZG
!
! build the WS cell corresponding to the force constant grid
!
atws(:, 1) = at_blk(:, 1) *DBLE(nr1)
atws(:, 2) = at_blk(:, 2) *DBLE(nr2)
atws(:, 3) = at_blk(:, 3) *DBLE(nr3)
atws(:, 1) = at_blk(:, 1) * DBLE(nr1)
atws(:, 2) = at_blk(:, 2) * DBLE(nr2)
atws(:, 3) = at_blk(:, 3) * DBLE(nr3)
! initialize WS r-vectors
CALL wsinit(rws, nrwsx, nrws, atws)
!
! end of (super)cell setup
!
!
! read q-point list
!
IF (ionode) READ (5,*) nq
CALL mp_bcast(nq, ionode_id, world_comm)
ALLOCATE ( q(3, nq) )
IF (.NOT.q_in_band_form) THEN
DO n = 1, nq
! mz_edits
IF (ionode) READ (5,*) (q(i, n), i = 1, 3)
! IF (ionode) READ (5,'(3F10.6)') q(:, n)
! mz_done
ENDDO
CALL mp_bcast(q, ionode_id, world_comm)
!
IF (q_in_cryst_coord) CALL cryst_to_cart(nq,q, bg,+ 1)
!
! read q-point list
!
!
IF (.NOT. q_external) THEN
CALL qpoint_gen1(dimx, dimy, dimz, nq)
! nq = ctrAB
CALL mp_bcast(nq, ionode_id, world_comm)
ALLOCATE ( q(3, nq) )
CALL qpoint_gen2(dimx, dimy, dimz, nq, q)
!
CALL mp_bcast(q, ionode_id, world_comm)
!
CALL cryst_to_cart(nq, q, bg, +1) ! convert them to Cartesian
ELSE
ALLOCATE( nqb(nq) )
ALLOCATE( xqaux(3, nq) )
ALLOCATE( letter(nq) )
ALLOCATE( label_list(nq) )
npk_label= 0
DO n = 1, nq
CALL read_line( input_line, end_of_file = tend, error = terr )
IF (tend) CALL errore('ZG','Missing lines', 1)
IF (terr) CALL errore('ZG','Error reading q points', 1)
DO j = 1, 256 ! loop over all characters of input_line
IF ( (ICHAR(input_line(j:j)) < 58 .AND. & ! a digit
ICHAR(input_line(j:j)) > 47) &
.OR.ICHAR(input_line(j:j)) == 43 .OR. & ! the + sign
ICHAR(input_line(j:j)) == 45 .OR. & ! the - sign
ICHAR(input_line(j:j)) == 46 ) THEN ! a dot .
!
! This is a digit, therefore this line contains the coordinates of the
! k point. We read it and EXIT from the loop on characters
!
READ(input_line,*) xqaux(1, n), xqaux(2, n), xqaux(3, n), &
nqb(n)
EXIT
ELSEIF ((ICHAR(input_line(j:j)) < 123 .AND. &
ICHAR(input_line(j:j)) > 64)) THEN
!
! This is a letter, not a space character. We read the next three
! characters and save them in the letter array, save also which k point
! it is
!
npk_label=npk_label+ 1
READ(input_line(j:),'(a3)') letter(npk_label)
label_list(npk_label) =n
!
! now we remove the letters from input_line and read the number of points
! of the line. The next two line should account for the case in which
! there is only one space between the letter and the number of points.
!
nch=3
IF ( ICHAR(input_line(j+ 1:j+ 1)) ==32 .OR. &
ICHAR(input_line(j+2:j+2)) ==32 ) nch=2
buffer =input_line(j+nch:)
READ(buffer,*, err =20, iostat=ios) nqb(n)
20 IF (ios /= 0) CALL errore('ZG',&
'problem reading number of points', 1)
EXIT
ENDIF
ENDDO
ENDDO
IF (q_in_cryst_coord) k_points ='crystal'
IF ( npk_label > 0 ) &
CALL transform_label_coord(ibrav, celldm, xqaux, letter, &
label_list, npk_label, nq, k_points, point_label_type )
DEALLOCATE(letter)
DEALLOCATE(label_list)
CALL mp_bcast(xqaux, ionode_id, world_comm)
CALL mp_bcast(nqb, ionode_id, world_comm)
IF (q_in_cryst_coord) CALL cryst_to_cart(nq,xqaux, bg,+ 1)
nqtot=SUM(nqb(1:nq- 1)) + 1
DO i = 1, nq- 1
IF (nqb(i) == 0) nqtot=nqtot+ 1
ENDDO
DEALLOCATE(q)
ALLOCATE(q(3, nqtot))
ALLOCATE(wq(nqtot))
CALL generate_k_along_lines(nq, xqaux, nqb, q, wq, nqtot)
nq=nqtot
DEALLOCATE(xqaux)
DEALLOCATE(nqb)
ENDIF
!
!
IF (ionode) READ (5, *) nq
CALL mp_bcast(nq, ionode_id, world_comm)
ALLOCATE ( q(3, nq) )
IF (.NOT.q_in_band_form) THEN
DO n = 1, nq
IF (ionode) READ (5, *) (q(i, n), i = 1, 3)
! IF (ionode) READ (5,'(3F10.6)') q(:, n)
ENDDO
CALL mp_bcast(q, ionode_id, world_comm)
!
IF (q_in_cryst_coord) CALL cryst_to_cart(nq, q, bg, +1)
ELSE
ALLOCATE( nqb(nq) )
ALLOCATE( xqaux(3, nq) )
ALLOCATE( letter(nq) )
ALLOCATE( label_list(nq) )
npk_label= 0
DO n = 1, nq
CALL read_line( input_line, end_of_file = tend, error = terr )
IF (tend) CALL errore('ZG','Missing lines', 1)
IF (terr) CALL errore('ZG','Error reading q points', 1)
DO j = 1, 256 ! loop over all characters of input_line
IF ( (ICHAR(input_line(j:j)) < 58 .AND. & ! a digit
ICHAR(input_line(j:j)) > 47) &
.OR.ICHAR(input_line(j:j)) == 43 .OR. & ! the + sign
ICHAR(input_line(j:j)) == 45 .OR. & ! the - sign
ICHAR(input_line(j:j)) == 46 ) THEN ! a dot .
!
! This is a digit, therefore this line contains the coordinates of the
! k point. We read it and EXIT from the loop on characters
!
READ(input_line,*) xqaux(1, n), xqaux(2, n), xqaux(3, n), &
nqb(n)
EXIT
ELSEIF ((ICHAR(input_line(j:j)) < 123 .AND. &
ICHAR(input_line(j:j)) > 64)) THEN
!
! This is a letter, not a space character. We read the next three
! characters and save them in the letter array, save also which k point
! it is
!
npk_label=npk_label+ 1
READ(input_line(j:),'(a3)') letter(npk_label)
label_list(npk_label) =n
!
! now we remove the letters from input_line and read the number of points
! of the line. The next two line should account for the case in which
! there is only one space between the letter and the number of points.
!
nch=3
IF ( ICHAR(input_line(j+ 1:j+ 1)) ==32 .OR. &
ICHAR(input_line(j+2:j+2)) ==32 ) nch=2
buffer =input_line(j+nch:)
READ(buffer,*, err =20, iostat=ios) nqb(n)
20 IF (ios /= 0) CALL errore('ZG',&
'problem reading number of points', 1)
EXIT
ENDIF
ENDDO
ENDDO
IF (q_in_cryst_coord) k_points ='crystal'
IF ( npk_label > 0 ) &
CALL transform_label_coord(ibrav, celldm, xqaux, letter, &
label_list, npk_label, nq, k_points, point_label_type )
DEALLOCATE(letter)
DEALLOCATE(label_list)
CALL mp_bcast(xqaux, ionode_id, world_comm)
CALL mp_bcast(nqb, ionode_id, world_comm)
IF (q_in_cryst_coord) CALL cryst_to_cart(nq,xqaux, bg,+ 1)
nqtot=SUM(nqb(1 : nq - 1)) + 1
DO i = 1, nq - 1
IF (nqb(i) == 0) nqtot=nqtot+ 1
ENDDO
DEALLOCATE(q)
ALLOCATE(q(3, nqtot))
ALLOCATE(wq(nqtot))
CALL generate_k_along_lines(nq, xqaux, nqb, q, wq, nqtot)
nq = nqtot
DEALLOCATE(xqaux)
DEALLOCATE(nqb)
ENDIF
!
ENDIF ! q_external, q-list
!
IF (asr /= 'no') THEN
CALL set_asr (asr, nr1, nr2, nr3, frc, zeu, &
@ -503,37 +523,37 @@ PROGRAM ZG
ENDIF
!
ALLOCATE ( dyn(3, 3, nat, nat), dyn_blk(3, 3, nat_blk, nat_blk) )
ALLOCATE ( z(3*nat, 3*nat), w2(3*nat, nq), f_of_q(3, 3, nat, nat) )
! mz_b
ALLOCATE ( z(3 * nat, 3 * nat), w2(3*nat, nq), f_of_q(3, 3, nat, nat) )
!
IF (ionode .AND. ZG_conf) THEN
ALLOCATE ( z_nq_zg(3*nat, 3*nat, nq),q_nq_zg(3, nq))
z_nq_zg(:,:,:) = (0.d0, 0.d0)
q_nq_zg(:,:) = 0.d0
ALLOCATE ( z_nq_zg(3 * nat, 3 * nat, nq), q_nq_zg(3, nq))
z_nq_zg(:, :, :) = (0.d0, 0.d0)
q_nq_zg(:, :) = 0.d0
ENDIF
! mz_e
!
IF (xmlifc) CALL set_sym(nat, tau, ityp, nspin_mag, m_loc )
ALLOCATE(num_rap_mode(3*nat, nq))
ALLOCATE(num_rap_mode(3 * nat, nq))
ALLOCATE(high_sym(nq))
num_rap_mode=- 1
high_sym=.TRUE.
DO n= 1, nq
DO n = 1, nq
dyn(:,:,:,:) = (0.d0, 0.d0)
lo_to_split=.FALSE.
f_of_q(:,:,:,:) = (0.d0,0.d0)
lo_to_split = .FALSE.
f_of_q(:,:,:,:) = (0.d0, 0.d0)
CALL setupmat (q(1,n), dyn, nat, at, bg, tau, itau_blk, nsc, alat, &
dyn_blk, nat_blk, at_blk, bg_blk, tau_blk, omega_blk, &
loto_2d, &
epsil, zeu, frc, nr1,nr2,nr3, has_zstar, rws, nrws,f_of_q)
epsil, zeu, frc, nr1,nr2,nr3, has_zstar, rws, nrws, f_of_q)
IF (.not.loto_2d) THEN
qhat(1) = q(1, n) *at(1, 1) +q(2, n) *at(2, 1) +q(3, n) *at(3, 1)
qhat(2) = q(1, n) *at(1, 2) +q(2, n) *at(2, 2) +q(3, n) *at(3, 2)
qhat(3) = q(1, n) *at(1, 3) +q(2, n) *at(2, 3) +q(3, n) *at(3,3)
qhat(1) = q(1, n) * at(1, 1) + q(2, n) * at(2, 1) + q(3, n) * at(3, 1)
qhat(2) = q(1, n) * at(1, 2) + q(2, n) * at(2, 2) + q(3, n) * at(3, 2)
qhat(3) = q(1, n) * at(1, 3) + q(2, n) * at(2, 3) + q(3, n) * at(3, 3)
IF ( ABS( qhat(1) - NINT (qhat(1) ) ) <= eps .AND. &
ABS( qhat(2) - NINT (qhat(2) ) ) <= eps .AND. &
ABS( qhat(3) - NINT (qhat(3) ) ) <= eps ) THEN
@ -578,41 +598,29 @@ PROGRAM ZG
!
END IF
! mz comments out !!!!!!!! if(iout_dyn.ne.0) call WRITE_dyn_on_file(q(1, n), dyn, nat, iout_dyn)
CALL dyndiag(nat, ntyp, amass, ityp, dyn, w2(1, n), z)
! mz_b fill a 3D matrix with all eigenvectors
! fill a 3D matrix with all eigenvectors
CALL mp_bcast(z, ionode_id, world_comm)
IF (ionode .AND. ZG_conf) THEN
z_nq_zg(:,:, n) = z(:,:)
z_nq_zg(:, :, n) = z(:, :)
q_nq_zg(:, n) = q(:, n)
ENDIF
! mz_e
!!!!! mz comments out ! IF (ionode.and.iout_eig.ne.0) &
!!!!! & CALL WRITE_eigenvectors(nat, ntyp, amass, ityp,q(1, n),w2(1, n), z, iout_eig)
!
! Cannot use the small group of \Gamma to analize the symmetry
! of the mode IF there is an electric field.
!
IF (xmlifc.AND..NOT.lo_to_split) THEN
WRITE(stdout,'(10x,"xq=", 3F8.4)') q(:, n)
CALL find_representations_mode_q(nat, ntyp,q(:, n), &
CALL find_representations_mode_q(nat, ntyp, q(:, n), &
w2(:, n), z,tau, ityp, amass, num_rap_mode(:, n), nspin_mag)
IF (code_group == code_group_old.OR.high_sym(n- 1)) high_sym(n) =.FALSE.
code_group_old= code_group
ENDIF
!
!
!!!!!!!!!mz IF (ionode.and.iout.ne.0) CALL WRITEmodes(nat,q(1, n),w2(1, n), z, iout)
!
ENDDO !nq
!
IF(iout .NE. 0.and.ionode) CLOSE(unit=iout)
IF(iout_dyn .NE. 0) CLOSE(unit=iout_dyn)
IF(iout_eig .NE. 0) CLOSE(unit=iout_eig)
!
!
!
@ -621,20 +629,19 @@ PROGRAM ZG
!
!
!
!mz_b
!
CALL mp_bcast(w2, ionode_id, world_comm)
IF ( ionode .AND. ZG_conf ) call ZG_configuration(nq, nat, ntyp, amass, &
ityp, q_nq_zg, w2, z_nq_zg, ios, &
dimx, dimy, dimz, nloops, error_thresh, synch,tau, alat, atm_zg, &
ntypx, at, q_in_cryst_coord, q_in_band_form, T, incl_qA, &
dimx, dimy, dimz, nloops, error_thresh, synch, tau, alat, atm_zg, &
ntypx, at, q_in_cryst_coord, q_external, T, incl_qA, &
compute_error, single_phonon_displ)
!mz_e
!
!
DEALLOCATE (z, w2, dyn, dyn_blk)
! mz_b
!
IF (ionode .AND. ZG_conf) DEALLOCATE (z_nq_zg, q_nq_zg)
! mz_e
!
!
! for a2F
!
@ -2129,20 +2136,135 @@ SUBROUTINE find_representations_mode_q ( nat, ntyp, xq, w2, u, tau, ityp, &
RETURN
END SUBROUTINE find_representations_mode_q
!mz adds this routine
SUBROUTINE qpoint_gen1(dimx, dimy, dimz, ctrAB)
!
use kinds, only: dp
IMPLICIT NONE
! input
INTEGER, intent(in) :: dimx, dimy, dimz
INTEGER, intent(out) :: ctrAB
!! REAL(DP), intent(out) :: q_AB(:,:)
! local
INTEGER :: i, j, k, n, ctr, nqs
REAL(DP), ALLOCATABLE :: q_all(:,:)
REAL(DP) :: q_B(3), q_A(3), eps
!
nqs = dimx * dimy * dimz
eps = 1.0E-06
!
ALLOCATE(q_all(3, nqs))
!
DO i = 1, dimx
DO j = 1, dimy
DO k = 1, dimz
! this is nothing but consecutive ordering
n = (k - 1) + (j - 1) * dimz + (i - 1) * dimy * dimz + 1
! q_all are the components of the complete grid in crystal axis
q_all(1, n) = dble(i - 1) / dimx ! + dble(k1)/2/dimx
q_all(2, n) = dble(j - 1) / dimy ! + dble(k2)/2/dimy
q_all(3, n) = dble(k - 1) / dimz ! + dble(k3)/2/dimz ! k1 , k2 , k3 is for the shift
ENDDO
ENDDO
ENDDO
!
ctr = 0
ctrAB = 0
DO i = 1, nqs
q_A = q_all(:, i) + q_all(:, i) ! q_A to find if q belongs in A
IF (((ABS(q_A(1)) .LT. eps) .OR. (abs(abs(q_A(1)) - 1) .LT. eps)) .AND. &
((ABS(q_A(2)) .LT. eps) .OR. (abs(abs(q_A(2)) - 1) .LT. eps)) .AND. &
((ABS(q_A(3)) .LT. eps) .OR. (abs(abs(q_A(3)) - 1) .LT. eps))) THEN
ctrAB = ctrAB + 1
ELSE
DO j = i + 1, nqs
q_B = q_all(:, i) + q_all(:, j)
IF (((ABS(q_B(1)) .LT. eps) .OR. (abs(abs(q_B(1)) - 1) .LT. eps)) .AND. &
((ABS(q_B(2)) .LT. eps) .OR. (abs(abs(q_B(2)) - 1) .LT. eps)) .AND. &
((ABS(q_B(3)) .LT. eps) .OR. (abs(abs(q_B(3)) - 1) .LT. eps))) THEN
ctr = ctr + 1
ctrAB = ctrAB + 1
END IF
END DO
END IF
END DO
!
DEALLOCATE(q_all)
!
!
END SUBROUTINE qpoint_gen1
SUBROUTINE qpoint_gen2(dimx, dimy, dimz, ctrAB, q_AB)
!
use kinds, only: dp
IMPLICIT NONE
! input
INTEGER, intent(in) :: dimx, dimy, dimz, ctrAB
REAL(DP), intent(out) :: q_AB(3, ctrAB)
! local
INTEGER :: i, j, k, n, ctr, nqs
REAL(DP), ALLOCATABLE :: q_all(:, :)
REAL(DP) :: q_B(3), q_A(3), eps
!
nqs = dimx * dimy * dimz
eps = 1.0E-06
!
ALLOCATE(q_all(3, nqs))
DO i = 1, dimx
DO j = 1, dimy
DO k = 1, dimz
! this is nothing but consecutive ordering
n = (k - 1) + (j - 1) * dimz + (i - 1) * dimy * dimz + 1
! q_all are the components of the complete grid in crystal axis
q_all(1, n) = dble(i - 1) / dimx ! + dble(k1)/2/dimx
q_all(2, n) = dble(j - 1) / dimy ! + dble(k2)/2/dimy
q_all(3, n) = dble(k - 1) / dimz ! + dble(k3)/2/dimz ! k1 , k2 , k3 is for the shift
ENDDO
ENDDO
ENDDO
!
ctr = 0
DO i = 1, nqs
q_A = q_all(:, i) + q_all(:, i) ! q_A to find if q belongs in A
IF (((ABS(q_A(1)) .LT. eps) .OR. (abs(abs(q_A(1)) - 1) .LT. eps)) .AND. &
((ABS(q_A(2)) .LT. eps) .OR. (abs(abs(q_A(2)) - 1) .LT. eps)) .AND. &
((ABS(q_A(3)) .LT. eps) .OR. (abs(abs(q_A(3)) - 1) .LT. eps))) THEN
ctr = ctr + 1
q_AB(:, ctr) = q_all(:, i)
! write(*,*) "A", q_AB(:, ctr)
ELSE
DO j = i + 1, nqs
q_B = q_all(:, i) + q_all(:, j)
IF (((ABS(q_B(1)) .LT. eps) .OR. (abs(abs(q_B(1)) - 1) .LT. eps)) .AND. &
((ABS(q_B(2)) .LT. eps) .OR. (abs(abs(q_B(2)) - 1) .LT. eps)) .AND. &
((ABS(q_B(3)) .LT. eps) .OR. (abs(abs(q_B(3)) - 1) .LT. eps))) THEN
ctr = ctr + 1
q_AB(:, ctr) = q_all(:, i)
! write(*,*) q_AB(:, ctr)
END IF
END DO
END IF
END DO
!
DEALLOCATE(q_all)
END SUBROUTINE qpoint_gen2
SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
dimx, dimy, dimz, nloops, error_thresh, synch,tau, alat, atm, &
ntypx, at, q_in_cryst_coord, q_in_band_form, T, incl_qA, &
dimx, dimy, dimz, nloops, error_thresh, synch, tau, alat, atm, &
ntypx, at, q_in_cryst_coord, q_external, T, incl_qA, &
compute_error, single_phonon_displ)
!
use kinds, only: dp
use constants, only: amu_ry, ry_to_thz, ry_to_cmm1, H_PLANCK_SI, &
K_BOLTZMANN_SI, AMU_SI, pi
USE cell_base, ONLY : bg
USE io_global, ONLY : ionode
implicit none
IMPLICIT NONE
! input
CHARACTER(LEN=3), intent(in) :: atm(ntypx)
LOGICAL, intent(in) :: synch, q_in_cryst_coord, q_in_band_form
LOGICAL, intent(in) :: synch, q_in_cryst_coord, q_external
LOGICAL, intent(in) :: incl_qA, compute_error, single_phonon_displ
INTEGER, intent(in) :: dimx, dimy, dimz, nloops
INTEGER, intent(in) :: nq, nat, ntyp, ios, ntypx
@ -2155,12 +2277,12 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
!
! local
CHARACTER(len=256) :: filename
CHARACTER(len=256) :: pointer_etta, pointer_T
CHARACTER(len=256) :: pointer_etta
!
INTEGER :: nat3, na, nta, ipol, i, j, k, qp, ii, p, kk
INTEGER :: nq_tot, pn, combs, combs_all, sum_zg
INTEGER, ALLOCATABLE :: Mx_mat(:,:), Mx_mat_or(:,:), M_mat(:,:), V_mat(:)
INTEGER, ALLOCATABLE :: Rlist(:,:)
INTEGER, ALLOCATABLE :: Mx_mat(:, :), Mx_mat_or(:, :), M_mat(:, :), V_mat(:)
INTEGER, ALLOCATABLE :: Rlist(:, :)
! nq_tot total number of q-points (including sets A, B, C)
! pn combinations
INTEGER :: ctr, ctr2, ctrA, ctrB, ctrAB
@ -2176,15 +2298,15 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
REAL(DP), PARAMETER :: eps = 1.0d-6
REAL(DP) :: hbar, ang, JOULE_TO_RY, u_rand, dotp, PE_nq, KE_nq
! ALLOCATE TABLES
REAL(DP), ALLOCATABLE :: equil_p(:,:,:), T_fact(:,:), DW_fact(:,:), qA(:,:), qB(:,:), DWp_fact(:,:), Tp_fact(:,:)
REAL(DP), ALLOCATABLE :: equil_p(:, :, :), T_fact(:, :), DW_fact(:, :), qA(:, :), qB(:, :), DWp_fact(:, :), Tp_fact(:, :)
! for displacements
REAL(DP), ALLOCATABLE :: Cx_matA(:,:), Cx_matB(:,:), Cx_matAB(:,:), Bx_vect(:)
REAL(DP), ALLOCATABLE :: Cx_matA(:, :), Cx_matB(:, :), Cx_matAB(:, :), Bx_vect(:)
! for momenta/velocities
REAL(DP), ALLOCATABLE :: Cpx_matA(:,:), Cpx_matB(:,:), Cpx_matAB(:,:)
! matrices to account for the coupling terms between different phonon branches !
REAL(DP), ALLOCATABLE :: sum_error_D(:,:), sum_diag_D(:,:), sum_error_B(:), sum_diag_B(:), sum_error_B2(:), sum_diag_B2(:)
REAL(DP), ALLOCATABLE :: D_tau(:,:,:), P_tau(:,:,:), ratio_zg(:)! displacements and velocities
REAL(DP), ALLOCATABLE :: R_mat(:,:), E_vect(:,:), D_vect(:,:), F_vect(:,:)
REAL(DP), ALLOCATABLE :: sum_error_D(:, :), sum_diag_D(:, :), sum_error_B(:), sum_diag_B(:), sum_error_B2(:), sum_diag_B2(:)
REAL(DP), ALLOCATABLE :: D_tau(:, :, :), P_tau(:, :, :), ratio_zg(:)! displacements and velocities
REAL(DP), ALLOCATABLE :: R_mat(:, :), E_vect(:, :), D_vect(:, :), F_vect(:, :)
! D_tau : atomic displacements
! z_nq_A : eigenvectors for q-points in set A
! z_nq_B : eigenvectors for q-points in set B
@ -2195,13 +2317,13 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
!
COMPLEX(DP) :: z_zg(3 * nat, 3 * nat, nq)
COMPLEX(DP) :: imagi
COMPLEX(DP), ALLOCATABLE :: z_nq_synch(:,:,:), z_nq_A(:,:,:), z_nq_B(:,:,:)
COMPLEX(DP), ALLOCATABLE :: z_nq_synch(:, :, :), z_nq_A(:, :, :), z_nq_B(:, :, :)
! singular value decomposition matrices U = R*conj(L)
!
INTEGER :: INFO, N_dim, M_dim, K_dim, L_dim , LWORK
REAL(DP), ALLOCATABLE :: RWORK(:), S_svd(:)
COMPLEX(DP), ALLOCATABLE :: M_over(:,:,:), U_svd(:,:,:), U_svd_d(:,:), dotp_mat(:,:)
COMPLEX(DP), ALLOCATABLE :: L_svd(:,:), R_svd(:,:), WORK(:), U_svd_d_new(:,:)
COMPLEX(DP), ALLOCATABLE :: M_over(:, :, :), U_svd(:, :, :), U_svd_d(:, :), dotp_mat(:, :)
COMPLEX(DP), ALLOCATABLE :: L_svd(:, :), R_svd(:, :), WORK(:), U_svd_d_new(:, :)
COMPLEX*16 dum( 1 ) ! for the ZGEEV
!
!
@ -2285,11 +2407,15 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
ENDDO
!
! WRITE(*,*) "total vibrational energy per cell", 2*dotp/dimx/dimy/dimz, "Ry"
IF (q_in_cryst_coord .EQV. .FALSE.) THEN
! in both cases convert them to crystal
CALL cryst_to_cart(nq, q, at, -1)
ELSE
CALL cryst_to_cart(nq, q, at, -1)
IF (q_external) THEN
IF (q_in_cryst_coord .EQV. .FALSE.) THEN
! in both cases convert them to crystal
CALL cryst_to_cart(nq, q, at, -1)
ELSE
CALL cryst_to_cart(nq, q, at, -1)
ENDIF
ELSE
CALL cryst_to_cart(nq, q, at, -1)
ENDIF
! To distinguish between different sets of qpoints, A, B, C
! to find how many points belong to set A and then allocate matrix accordingly
@ -2421,7 +2547,6 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
DO ii = 1, pn - 1
M_over = 0.d0
! Construct the overlap matrix M_{\nu,\nu'}
!WRITE(*,*) i
S_svd = 0.d0
DO p = 1, nat3
DO j = 1, nat3
@ -2447,21 +2572,18 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
DO qp = 1, nat3
DO k = 1, nat3
dotp_mat(qp, k) = CONJG(M_over(qp, qp, ii)) * CONJG(U_svd_d(k, ii))
! WRITE(*,*) REAL(dotp_mat(qp, k)), aimag(dotp_mat(qp, k))
ENDDO
ENDDO
dotp_mat = ABS(REAL(dotp_mat))
DO qp = 1, nat3
p = MAXLOC(REAL(dotp_mat(qp,:)), 1)
!!! WRITE(*,*) p, "p_values"
U_svd_d_new(qp, ii) = U_svd_d(p, ii)
ENDDO
DO qp = 1, nat3
DO k = 1, nat3
z_nq_synch(k, qp, ii + i + 1) = U_svd_d_new(qp, ii) *z_zg(k, qp, ii + i + 1)
z_nq_synch(k, qp, ii + i + 1) = U_svd_d_new(qp, ii) * z_zg(k, qp, ii + i + 1)
ENDDO
ENDDO
! overWRITE z_zg
z_zg(:, :, ii + i + 1) = z_nq_synch(:, :, ii + i + 1)
ENDDO ! ii-loop
ENDDO ! i-loop
@ -2503,17 +2625,15 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
dotp_mat = ABS(DBLE(dotp_mat))
DO qp = 1, nat3
p = MAXLOC(DBLE(dotp_mat(qp, :)), 1)
!! WRITE(*,*) p, "p_values"
U_svd_d_new(qp, ii) = U_svd_d(p, ii)
ENDDO
!!!!!
! WRITE(*,*) "diago"
!
DO qp = 1, nat3
DO k = 1, nat3
z_nq_synch(k, qp, ii + ctr + 1) = U_svd_d_new(qp, ii) * z_zg(k, qp, ii + ctr + 1)
ENDDO
ENDDO
! overWRITE z_zg
! overwrite z_zg
z_zg(:, :, ii + ctr + 1) = z_nq_synch(:, :, ii + ctr + 1)
ENDDO ! ii-loop
ENDIF ! mod(ctrAB, pn)
@ -2563,7 +2683,7 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
combs = combs + i
ENDDO
combs_all = 2 * combs + nat3 !; % with x1^2, x2^2 ...
!WRITE(*,*) combs, combs_all
!
! combs_all refere also to all possible pais ({\k,\a}, {\k' \a'})
!
ALLOCATE(ratio_zg(combs_all))
@ -2581,7 +2701,6 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
! we just select possible permutations until the error is lower than a
! threshold. The lower the threshold the longer the algorithm can take.
! filename = 'ZG-configuration.txt'
WRITE(pointer_T,'(f5.1)') T
WRITE(pointer_etta,'(f5.3)') error_thresh
filename = 'ZG-configuration_' // TRIM( pointer_etta ) // '.dat' !'.fp'
OPEN (unit = 80, file = filename, status = 'unknown', form = 'formatted')
@ -2592,19 +2711,19 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
! We also make the inherent choice that each column of Mx_mat_or has the same number of positive and negative signs
Mx_mat_or = 0
DO i = 1, 2 * pn / 4, 2
Mx_mat_or(i,:) = M_mat(i,:)
Mx_mat_or(i, :) = M_mat(i, :)
ENDDO
ctr = 1
DO i = 2, 2 * pn / 4, 2
Mx_mat_or(i,:) = M_mat(2 * pn + 1 - i,:)
Mx_mat_or(i, :) = M_mat(2 * pn + 1 - i, :)
ctr = ctr + 1
ENDDO
DO i = 2 * pn / 4 + 1, 2 * pn / 2, 2
Mx_mat_or(i,:) = M_mat(i + 1,:)
Mx_mat_or(i, :) = M_mat(i + 1, :)
ctr = ctr + 1
ENDDO
DO i = 2 * pn / 4 + 2, 2 * pn / 2, 2
Mx_mat_or(i,:) = M_mat(2 * pn + 2 - i,:)
Mx_mat_or(i, :) = M_mat(2 * pn + 2 - i, :)
ctr = ctr + 1
ENDDO
!
@ -2615,8 +2734,8 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
! and ALLOCATE the M_x,y matrices ! so we DO not have specific order !
call random_number(u_rand)
ii = 1 + FLOOR(i * u_rand)
Mx_mat(i,:) = Mx_mat_or(ii,:)
Mx_mat_or(ii,:) = Mx_mat_or(i,:) ! so I DO not repeat this entry
Mx_mat(i, :) = Mx_mat_or(ii, :)
Mx_mat_or(ii, :) = Mx_mat_or(i, :) ! so I DO not repeat this entry
ENDDO
! DO q-points in sets A n B
! based on the sets of signs we genereated from the above loop
@ -2695,7 +2814,7 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
ctr = ctr + 1
ENDDO
ENDDO ! p loop
! D_vect(:, ii) =MATMUL(R_mat, Bx_vect)
! D_vect(:, ii) = MATMUL(R_mat, Bx_vect)
! D_vect contains the diagonal and the non-diagonal terms (i.e. v = v' and v .neq. v')
! E_vect contains only the diagonal terms (i.e. v = v')
! F_vect contains the error (i.e.each entry is the contribution from v \neq v') at each q point to minimize
@ -2707,7 +2826,7 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
!
!
!Compute error
!WRITE(80,*) "Sum of diagonal terms per q-point:", SUM(sum_diag_D)/ctrAB
!
!
IF (compute_error) THEN
sum_error_D = 0.0d0
@ -2743,7 +2862,7 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
dotp = dotp + q(i, ii) * Rlist(j, ii)!
ENDDO ! ii
sum_error_B2(ctr2) = sum_error_B2(ctr2) + cos(2.0d0 * pi * dotp) * F_vect(p, i)
!WRITE(*,*) "cosss", cos(2.0d0*pi*dotp)
!
ENDDO ! i
ctr2 = ctr2 + 1
ENDDO ! p
@ -2814,7 +2933,7 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
IF (ABS(qB(ctrB, 1)) < eps) qB(ctrB, 1) = 0.0
IF (ABS(qB(ctrB, 2)) < eps) qB(ctrB, 2) = 0.0
IF (ABS(qB(ctrB, 3)) < eps) qB(ctrB, 3) = 0.0
!WRITE(*,*) "ohohoB", qB(ctrB,:)
!
ENDIF
ENDDO
!
@ -2836,9 +2955,9 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
WRITE(80,'(A20, 1F6.2,A2)') 'Temperature is: ' , T ,' K'
WRITE(80,*) "Atomic positions", nat * nq_tot
WRITE(81,*) "ZG-Velocities (Ang/ps)"
! Generate displacements and velocities
! remember nq_tot is also equal to the number of cells
! Here now I ll generate the displacements according to
! Generate displacements and velocities.
! Remember nq_tot is also equal to the number of cells
! Here the displacements are generated according to
! Np^(- 1/2)(Mo/Mk)^(1/2)[\sum_{q \in B} e^{1qR_p}e^v_{ka}(q)(x_{qv}+y_{q\nu})
! z_zg(nat3, nat3, nq))
!
@ -2872,7 +2991,7 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
DO qp = 1, ctrA
dotp = 0.0d0
DO ii = 1, 3
dotp = dotp + qA(qp, ii) * Rlist(p, ii)! + qlistA(q, 2) * Rlist(p, 2) +qlistA(q, 3) * Rlist(p, 3)
dotp = dotp + qA(qp, ii) * Rlist(p, ii)!
ENDDO
DO j = 1, nat3
D_tau(p, k, i) = D_tau(p, k, i) + SQRT(1.0d0 / nq_tot / amass(nta)) * cos(2.0d0 * pi * dotp) &
@ -2884,7 +3003,7 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
ENDIF ! IF incl_qA
!
ctr = ctr + 1 ! for k and i
IF (abs(D_tau(p, k, i)) .GT. 5) CALL errore('ZG', 'Displacement very large', D_tau(p, k, i) )
IF (ABS(D_tau(p, k, i)) .GT. 5) CALL errore('ZG', 'Displacement very large', D_tau(p, k, i) )
D_tau(p, k, i) = equil_p(p, k, i) + D_tau(p, k, i) ! add equil structure
ENDDO ! end i for cart directions
ENDDO ! end k loop over nat
@ -2986,7 +3105,7 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
!
!
DEALLOCATE(T_fact, Tp_fact, DW_fact, DWp_fact)
DEALLOCATE(equil_p, Rlist, D_tau,qA,qB, z_nq_A, z_nq_B)
DEALLOCATE(equil_p, Rlist, D_tau, qA, qB, z_nq_A, z_nq_B)
DEALLOCATE(Cx_matA, Cx_matB, Cx_matAB)
DEALLOCATE(Cpx_matA, Cpx_matB, Cpx_matAB)
DEALLOCATE(Mx_mat_or, Mx_mat, M_mat, V_mat, ratio_zg)
@ -3109,13 +3228,13 @@ SUBROUTINE single_phonon(nq_tot, nat, ctrB, ctrA, nat3, ityp, ntyp, &
nta = ityp(k)
DO i = 1, 3 ! i is for cart directions
D_tau(p, k, i) = D_tau(p, k, i) + SQRT(2.0d0 / nq_tot / amass(nta)) * DBLE(EXP(imagi * 2.0d0 * pi * dotp) &
* z_nq_B(ctr, j, qp) * (1.d0 + imagi) * abs(Cx_matB(j, qp)))
* z_nq_B(ctr, j, qp) * (1.d0 + imagi) * ABS(Cx_matB(j, qp)))
P_tau(p, k, i) = P_tau(p, k, i) + SQRT(2.0d0 / nq_tot * amass(nta)) * DBLE(EXP(imagi * 2.0d0 * pi * dotp) &
* z_nq_B(ctr, j, qp) * (1.d0 + imagi) * abs(Cpx_matB(j, qp))) / (amass(nta) * AMU_SI)
* z_nq_B(ctr, j, qp) * (1.d0 + imagi) * ABS(Cpx_matB(j, qp))) / (amass(nta) * AMU_SI)
! Here we calculate the momenta of the nuclei and finally
!we divide by (amass(nta) *AMU_SI) to get the velocities.
ctr = ctr + 1 ! for k and i
IF (abs(D_tau(p, k, i)) .GT. 5) CALL errore('ZG', 'Displacement very large', D_tau(p, k, i) )
IF (ABS(D_tau(p, k, i)) .GT. 5) CALL errore('ZG', 'Displacement very large', D_tau(p, k, i) )
D_tau(p, k, i) = equil_p(p, k, i) + D_tau(p, k, i) ! add equil structure
ENDDO ! i loop
! write output data
@ -3144,13 +3263,13 @@ SUBROUTINE single_phonon(nq_tot, nat, ctrB, ctrA, nat3, ityp, ntyp, &
nta = ityp(k)
DO i = 1, 3 ! i is for cart directions
D_tau(p, k, i) = D_tau(p, k, i) + SQRT(2.0d0 / nq_tot / amass(nta)) * DBLE(EXP(imagi * 2.0d0 * pi * dotp) &
* z_nq_A(ctr, j, qp) * (1.d0 + imagi) * abs(Cx_matA(j, qp)))
* z_nq_A(ctr, j, qp) * (1.d0 + imagi) * ABS(Cx_matA(j, qp)))
P_tau(p, k, i) = P_tau(p, k, i) + SQRT(2.0d0 / nq_tot * amass(nta)) * DBLE(EXP(imagi * 2.0d0 * pi * dotp) &
* z_nq_A(ctr, j, qp) * (1.d0 + imagi) * abs(Cpx_matA(j, qp))) / (amass(nta) * AMU_SI)
* z_nq_A(ctr, j, qp) * (1.d0 + imagi) * ABS(Cpx_matA(j, qp))) / (amass(nta) * AMU_SI)
! Here we calculate the momenta of the nuclei and finally
!we divide by (amass(nta) *AMU_SI) to get the velocities.
ctr = ctr + 1 ! for k and i
IF (abs(D_tau(p, k, i)) .GT. 5) CALL errore('ZG', 'Displacement very large', D_tau(p, k, i) )
IF (ABS(D_tau(p, k, i)) .GT. 5) CALL errore('ZG', 'Displacement very large', D_tau(p, k, i) )
D_tau(p, k, i) = equil_p(p, k, i) + D_tau(p, k, i) ! add equil structure
ENDDO ! i loop
! write output data
@ -3162,36 +3281,6 @@ SUBROUTINE single_phonon(nq_tot, nat, ctrB, ctrA, nat3, ityp, ntyp, &
ENDDO ! j loop
ENDDO ! qp loop
!
! !Repeat for minus q now:
! !
! WRITE(85,'(A30, 3F8.4, A15, i)') "Phonon mode at q-point", -qB(qp, :), " and branch:", j
! WRITE(86,'(A30, 3F8.4, A15, i)') "Phonon mode at q-point", -qB(qp, :), " and branch:", j
! D_tau = 0.0d0
! P_tau = 0.0d0
! DO p = 1, nq_tot
! dotp = 0.0d0
! DO ii = 1, 3
! dotp = dotp + -qB(qp, ii) * Rlist(p, ii)! dot product between q and R
! ENDDO
! ctr = 1
! DO k = 1, nat ! k represents the atom
! nta = ityp(k)
! DO i = 1, 3 ! i is for cart directions
! D_tau(p, k, i) = D_tau(p, k, i) + SQRT(2.0d0 / nq_tot / amass(nta)) * DBLE(EXP(imagi * 2.0d0 * pi * dotp) &
! * CONJG(z_nq_B(ctr, j, qp)) * (1.d0 - imagi) * abs(Cx_matB(j, qp)))
! P_tau(p, k, i) = P_tau(p, k, i) + SQRT(2.0d0 / nq_tot * amass(nta)) * DBLE(EXP(imagi * 2.0d0 * pi * dotp) &
! * CONJG(z_nq_B(ctr, j, qp)) * (1.d0 - imagi) * abs(Cpx_matB(j, qp))) / (amass(nta) * AMU_SI)
! ! Here we calculate the momenta of the nuclei and finally
! !we divide by (amass(nta) *AMU_SI) to get the velocities.
! ctr = ctr + 1 ! for k and i
! D_tau(p, k, i) = equil_p(p, k, i) + D_tau(p, k, i) ! add equil structure
! ENDDO ! i loop
! ! write output data
! WRITE(85,'(A6, 3F13.8)') atm(ityp(k)), D_tau(p, k, :)
! WRITE(86,'(A6, 3F15.8)') atm(ityp(k)), P_tau(p, k,:) * 1.0E-12 ! multiply to obtain picoseconds
! !
! ENDDO ! k loop
! ENDDO ! p loop
!
!
DEALLOCATE(D_tau, P_tau)

View File

@ -724,15 +724,20 @@
OPEN(iubvec, FILE = tempfile, ACTION = 'read', IOSTAT = ios)
IF (ios /= 0) THEN
!
! if it doesn't exist, then we just set the bvec and wb to zero
! HL 11/2020: The part below is commented since it makes sense to stop the calculation
! in case that there is no *.bvec file with vme = .true. .
!
nnb = 1
ALLOCATE(bvec(3, nnb, nkstot), STAT = ierr)
IF (ierr /= 0) CALL errore('vmebloch2wan', 'Error allocating bvec', 1)
ALLOCATE(wb(nnb), STAT = ierr)
IF (ierr /= 0) CALL errore('vmebloch2wan', 'Error allocating wb', 1)
bvec = zero
wb = zero
! !
! ! if it doesn't exist, then we just set the bvec and wb to zero
! !
! nnb = 1
! ALLOCATE(bvec(3, nnb, nkstot), STAT = ierr)
! IF (ierr /= 0) CALL errore('vmebloch2wan', 'Error allocating bvec', 1)
! ALLOCATE(wb(nnb), STAT = ierr)
! IF (ierr /= 0) CALL errore('vmebloch2wan', 'Error allocating wb', 1)
! bvec = zero
! wb = zero
CALL errore ('vmebloch2wan','You selected vme =.true. but error opening' // tempfile, 1)
ELSE
READ(iubvec,*) tempfile
READ(iubvec,*) nkstot_tmp, nnb
@ -780,7 +785,7 @@
!
IF (ios /= 0) THEN
! if it doesn't exist, then we just set the mmn to zero
CALL errore ('vmebloch2wan','error opening' // tempfile, 0)
CALL errore ('vmebloch2wan','error opening' // tempfile, 1)
ELSE
!
DO ik = 1, nkstot

View File

@ -10,7 +10,7 @@
PROGRAM epw
!-----------------------------------------------------------------------
!! author: Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
!! version: v5.3
!! version: v5.3.1
!! license: GNU
!! summary: EPW main driver
!!
@ -38,7 +38,7 @@
CHARACTER(LEN = 12) :: code = 'EPW'
!! Name of the program
!
version_number = '5.3.0'
version_number = '5.3.1'
!
CALL init_clocks(.TRUE.)
!

View File

@ -1362,7 +1362,7 @@
IF (homogeneous) THEN
! In case of k-point symmetry
IF (mp_mesh_k .AND. etf_mem < 3) THEN
IF (iterative_bte) THEN
IF (iterative_bte .OR. ephwrite) THEN
ALLOCATE(bztoibz_tmp(nkf1 * nkf2 * nkf3), STAT = ierr)
IF (ierr /= 0) CALL errore('qwindow', 'Error allocating bztoibz_tmp', 1)
bztoibz_tmp(:) = 0
@ -1409,7 +1409,7 @@
!
! In case of k-point symmetry
IF (mp_mesh_k .AND. etf_mem < 3) THEN
IF (iterative_bte) THEN
IF (iterative_bte .OR. ephwrite) THEN
ALLOCATE(bztoibz_tmp(nkf1 * nkf2 * nkf3), STAT = ierr)
IF (ierr /= 0) CALL errore('qwindow', 'Error allocating bztoibz_tmp', 1)
bztoibz_tmp(:) = 0

View File

@ -1787,7 +1787,7 @@
! SP - July 2020
! We should not recompute bztoibz
DO ikbz = 1, nkftot
ixkff(ikbz) = ixkf(map_rebal(bztoibz(ikbz)))
ixkff(ikbz) = ixkf(bztoibz(ikbz))
ENDDO
!
ELSE

View File

@ -108,10 +108,22 @@
IMPLICIT NONE
!
! Local variables
CHARACTER(LEN = 255) :: dummy
!! Copy of field read for parsing
CHARACTER(LEN = 255) :: lvalue
!! Parsed logical value
LOGICAL :: random
!! Random
LOGICAL :: notfound
!! If .TRUE., there is no "write_hr".
INTEGER :: i
!! Band index
INTEGER :: pos
!! Position in strings
INTEGER :: pos1
!! Position in strings
INTEGER :: pos2
!! Position in strings
REAL(KIND = DP) :: et_tmp(nbnd, nkstot)
!! eigenvalues on full coarse k-mesh
!
@ -156,11 +168,44 @@
WRITE(iuwinfil, '("num_iter = ", i7)') num_iter
IF (vme) WRITE(iuwinfil, '(a)') "write_bvec = .true."
!
! HL 11/2020: The code block below is necessary
! until the bug fix in W90 is merged into its master branch.
!
IF (vme) THEN
notfound = .TRUE.
DO i = 1, nwanxx
IF (wdata(i) /= ' ') THEN
pos = INDEX(TRIM(ADJUSTL(wdata(i))), 'write_hr')
IF (pos == 1) THEN
dummy = wdata(i) (LEN('write_hr') + 1:)
pos1 = INDEX(dummy, '!')
pos2 = INDEX(dummy, '#')
IF (pos1 == 0 .AND. pos2 == 0) lvalue = dummy
IF (pos1 == 0 .AND. pos2 > 0) lvalue = dummy(:pos2 - 1)
IF (pos2 == 0 .AND. pos1 > 0) lvalue = dummy(:pos1 - 1)
IF (pos1 > 0 .AND. pos2 > 0) lvalue = dummy(:MIN(pos1, pos2) - 1)
lvalue = TRIM(ADJUSTL(lvalue))
IF (lvalue(1:1) == '=' .OR. lvalue(1:1) == ':') THEN
lvalue = lvalue(2:)
IF (INDEX(lvalue, 't') > 0) THEN
notfound = .FALSE.
ELSEIF (INDEX(lvalue, 'f') > 0) THEN
wdata(i) = "write_hr = .true."
notfound = .FALSE.
ENDIF
ENDIF
ENDIF
ENDIF
ENDDO
ENDIF
!
! Write any extra parameters to the prefix.win file
DO i = 1, nwanxx
IF (wdata(i) /= ' ') WRITE(iuwinfil, *) wdata(i)
IF (wdata(i) /= ' ') WRITE(iuwinfil, *) TRIM(wdata(i))
ENDDO
!
IF (vme .AND. notfound) WRITE(iuwinfil, *) "write_hr = .true."
!
CLOSE(iuwinfil)
!
ENDIF ! meta_ionode

View File

@ -16,6 +16,12 @@ MODULE fft_helper_subroutines
& tg_reduce_rho_5
END INTERFACE
INTERFACE c2psi_gamma
MODULE PROCEDURE c2psi_gamma_cpu
#ifdef __CUDA
MODULE PROCEDURE c2psi_gamma_gpu
#endif
END INTERFACE
PRIVATE
PUBLIC :: fftx_threed2oned, fftx_oned2threed
PUBLIC :: tg_reduce_rho
@ -293,7 +299,7 @@ CONTAINS
END SUBROUTINE
SUBROUTINE c2psi_gamma( desc, psi, c, ca )
SUBROUTINE c2psi_gamma_cpu( desc, psi, c, ca )
!
! Copy wave-functions from 1D array (c_bgrp) to 3D array (psi) in Fourier space
!
@ -326,6 +332,48 @@ CONTAINS
END IF
END SUBROUTINE
#ifdef __CUDA
SUBROUTINE c2psi_gamma_gpu( desc, psi, c, ca )
!
! Copy wave-functions from 1D array (c_bgrp) to 3D array (psi) in Fourier space,
! GPU implementation.
!
USE fft_param
USE fft_types, ONLY : fft_type_descriptor
TYPE(fft_type_descriptor), INTENT(in) :: desc
complex(DP), DEVICE, INTENT(OUT) :: psi(:)
complex(DP), DEVICE, INTENT(IN) :: c(:)
complex(DP), DEVICE, OPTIONAL, INTENT(IN) :: ca(:)
complex(DP), parameter :: ci=(0.0d0,1.0d0)
integer :: ig
integer, device, pointer :: nlm_d(:), nl_d(:)
nlm_d => desc%nlm_d
nl_d => desc%nl_d
!
psi = 0.0d0
!
! nlm and nl array: hold conversion indices form 3D to
! 1-D vectors. Columns along the z-direction are stored
! contigiously
! c array: stores the Fourier expansion coefficients
! Loop for all local g-vectors (ngw)
IF( PRESENT(ca) ) THEN
!$cuf kernel do (1)
do ig = 1, desc%ngw
psi( nlm_d( ig ) ) = CONJG( c( ig ) ) + ci * conjg( ca( ig ))
psi( nl_d( ig ) ) = c( ig ) + ci * ca( ig )
end do
ELSE
!$cuf kernel do (1)
do ig = 1, desc%ngw
psi( nlm_d( ig ) ) = CONJG( c( ig ) )
psi( nl_d( ig ) ) = c( ig )
end do
END IF
END SUBROUTINE
#endif
SUBROUTINE c2psi_k( desc, psi, c, igk, ngk)
!
! Copy wave-functions from 1D array (c/evc) ordered according (k+G) index igk

View File

@ -1,7 +1,10 @@
Version: 6.7
* hp.x module added
Version: 6.2
* d3.x module disabled
Version: 5.0svn
Version: 5.0
* adding bands.x and dos.x modules
* note the syntax change for projwfc.x, bands.x, and dos.x,
where the &INPUTPP namelist was changed to &PROJWFC, &BANDS,

View File

@ -44,6 +44,7 @@ Currently, the following PWscf programs (modules) are supported:
* bands.x
* dos.x
* ld1.x (atomic)
* hp.x
Directory structure of the PWgui source package:
@ -106,4 +107,4 @@ following:
--
Anton Kokalj (tone.kokalj@ijs.si), Mon Jan 23 12:28:40 CET 2012
Anton Kokalj (tone.kokalj@ijs.si), 29 Nov 2020

View File

@ -1 +1 @@
6.6
6.7

View File

@ -9,7 +9,8 @@ INPUT_FILES_HTML = \
INPUT_PROJWFC.html \
INPUT_BANDS.html \
INPUT_DOS.html \
INPUT_LD1.html
INPUT_LD1.html \
INPUT_HP.html
INPUT_FILES_TXT = $(INPUT_FILES_HTML:.html=.txt)
LINK_FILES = $(INPUT_FILES_TXT)
@ -39,6 +40,7 @@ input_html: links
./htmlise.sh INPUT_BANDS.txt > INPUT_BANDS.html
./htmlise.sh INPUT_DOS.txt > INPUT_DOS.html
./htmlise.sh INPUT_LD1.txt > INPUT_LD1.html
./htmlise.sh INPUT_HP.txt > INPUT_HP.html
make_user_guide: links
rm -rf user_guide/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 KiB

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

View File

@ -354,7 +354,7 @@ help lsd -helpfmt helpdoc -helptext {
1 ... spin-polarized calculation
<b>BEWARE:</b>
not allowed if iswitch=3 (PP generation) or with full
not allowed if "iswitch"=3 (PP generation) or with full
relativistic calculation
</pre></blockquote>
</ul>
@ -525,7 +525,7 @@ help verbosity -helpfmt helpdoc -helptext {
<blockquote><pre>
<b>'low'</b> or <b>'high'</b>
if <b>'high'</b> with iswitch=2,3 prints separately core and
if <b>'high'</b> with "iswitch"=2,3 prints separately core and
valence contributions to the energies. Print the
frozen-core energy.
</pre></blockquote>
@ -777,12 +777,12 @@ help pseudotype -helpfmt helpdoc -helptext {
</li>
<blockquote><pre>
1 ... norm-conserving, single-projector PP
IMPORTANT: if pseudotype=1 all calculations are done
<b>IMPORTANT:</b> if pseudotype=1 all calculations are done
using the SEMILOCAL form, not the separable nonlocal form
2 ... norm-conserving PP in separable form (obsolescent)
All calculations are done using SEPARABLE non-local form
IMPORTANT: multiple projectors allowed but not properly
<b>IMPORTANT:</b> multiple projectors allowed but not properly
implemented, use only if you know what you are doing
3 ... ultrasoft PP or PAW
@ -1423,7 +1423,7 @@ help nconf -helpfmt helpdoc -helptext {
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre> the number of configurations to be tested. For iswitch = 4 nconf=2
<blockquote><pre> the number of configurations to be tested. For "iswitch"=4 nconf=2
</pre></blockquote>
</ul>
@ -1438,7 +1438,7 @@ help file_pseudo -helpfmt helpdoc -helptext {
<br><li> <em>Type: </em>CHARACTER</li>
<br><li> <em>Default: </em> ' '
</li>
<br><li> <em>Status: </em> ignored if iswitch=3
<br><li> <em>Status: </em> ignored if "iswitch"=3
</li>
<br><li> <em>Description:</em>
</li>
@ -1453,7 +1453,7 @@ the old RRKJ format is first tried;
* otherwise, the old NC format is read.
IMPORTANT: in the latter case, all calculations are done
<b>IMPORTANT:</b> in the latter case, all calculations are done
using the SEMILOCAL form, not the separable nonlocal form.
Use the UPF format if you want to test the separable form!
</pre></blockquote>
@ -1515,9 +1515,10 @@ help configts -helpfmt helpdoc -helptext {
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
A string containing the test valence electronic
configuration nc, nc=1,nconf. Same syntax as for "config".
If configts(i) is not set, the electron configuration
A string array containing the test electronic configuration.
"configts"(nc), nc=1,"nconf", has the same syntax as for "config"
but only VALENCE states must be included.
If "configts"(i) is not set, the electron configuration
is read from the cards following the namelist.
</pre></blockquote>
</ul>
@ -1581,7 +1582,7 @@ help rcutv -helpfmt helpdoc -helptext {
</li>
<blockquote><pre>
Cutoff distance (CUT) for the inclusion of LDA-1/2 potential.
Needed (mandatory) only if iswitch = 4
Needed (mandatory) only if "iswitch" = 4
</pre></blockquote>
</ul>

View File

@ -7,7 +7,7 @@ module Dos\#auto -title "PWSCF GUI: module Dos.x" -script {
namelist dos -name "DOS" {
optional {
var prefix {
-label "Prefix of punch file saved by program PW.X (prefix):"
-label "Prefix of outdir files saved by program PW.X (prefix):"
-fmt %S -validate string
}

View File

@ -0,0 +1,13 @@
# ------------------------------------------------------------------------
#
# ------------------------------------------------------------------------
proc ::pwscf::hpReadFilter {moduleObj channel} {
# hp.x formatted input file should have the &INPUTHP namelist
set status [::pwscf::readFilter::findNamelists $moduleObj $channel INPUTHP errMsg]
if { $status == 0 } {
$moduleObj readFileWrongFormat hp.x $errMsg
}
return [readFilter::default $moduleObj $channel {logical {ntyp {skip_type equiv_type perturb_only_atom}}}]
}

View File

@ -0,0 +1,31 @@
tracevar ntyp w {
set ntyp [varvalue ntyp]
foreach w {skip_type equiv_type perturb_only_atom} {
widgetconfigure $w -end $ntyp
}
}
tracevar only_q w {
if { [vartextvalue only_q] == "Yes" } {
groupwidget start_last_q enable
widget sum_pertq enable
} else {
groupwidget start_last_q disable
widget sum_pertq disable
}
}
tracevar start_q w {
if { [varvalue start_q] != "" } {
varset only_q -value .true.
groupwidget start_last_q enable
widget sum_pertq enable
}
}
tracevar last_q w {
if { [varvalue last_q] != "" } {
varset only_q -value .true.
groupwidget start_last_q enable
widget sum_pertq enable
}
}

View File

@ -0,0 +1,551 @@
#
# Help-file automatically created by helpdoc utility
#
# !!! DO NOT EDIT: CHANGES WILL BE LOST !!!
#
# ------------------------------------------------------------------------
help prefix -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>prefix</b></big>
</li>
<br><li> <em>Type: </em>CHARACTER</li>
<br><li> <em>Default: </em> 'pwscf'
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Prepended to input/output filenames; must be the same
used in the calculation of unperturbed system.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help outdir -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>outdir</b></big>
</li>
<br><li> <em>Type: </em>CHARACTER</li>
<br><li> <em>Default: </em>
value of the <tt>ESPRESSO_TMPDIR</tt> environment variable if set;
<br> current directory ('./') otherwise
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Directory containing input, output, and scratch files;
must be the same as specified in the calculation of
the unperturbed system.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help iverbosity -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>iverbosity</b></big>
</li>
<br><li> <em>Type: </em>INTEGER</li>
<br><li> <em>Default: </em> 1
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
= 1 : minimal output
= 2 : as above + symmetry matrices, final response
matrices chi0 and chi1 and their inverse matrices,
full U matrix
= 3 : as above + various detailed info about the NSCF
calculation at k and k+q
= 4 : as above + response occupation matrices at every
iteration and for every q point in the star
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help max_seconds -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>max_seconds</b></big>
</li>
<br><li> <em>Type: </em>REAL</li>
<br><li> <em>Default: </em> 1.d7
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Maximum allowed run time before the job stops smoothly.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
grouphelp {nq1 nq2 nq3} -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variables: </em><big><b>nq1, nq2, nq3</b></big>
</li>
<br><li> <em>Type: </em>INTEGER</li>
<br><li> <em>Default: </em> 1,1,1
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Parameters of the Monkhorst-Pack grid (no offset).
Same meaning as for nk1, nk2, nk3 in the input of pw.x.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help skip_equivalence_q -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>skip_equivalence_q</b></big>
</li>
<br><li> <em>Type: </em>LOGICAL</li>
<br><li> <em>Default: </em> .false.
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
If .true. then the HP code will skip the equivalence
analysis of q points, and thus the full grid of q points
will be used. Otherwise the symmetry is used to determine
equivalent q points (star of q), and then perform
calculations only for inequivalent q points.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help determine_num_pert_only -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>determine_num_pert_only</b></big>
</li>
<br><li> <em>Type: </em>LOGICAL</li>
<br><li> <em>Default: </em> .false.
</li>
<br><li> <em>See: </em> find_atpert
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
If .true. determines the number of perturbations
(i.e. which atoms will be perturbed) and exits smoothly
without performing any calculation. For DFT+U+V, it also
determines the indices of inter-site couples.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help find_atpert -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>find_atpert</b></big>
</li>
<br><li> <em>Type: </em>INTEGER</li>
<br><li> <em>Default: </em> 1
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Method for searching of atoms which must be perturbed.
1 = Find how many inequivalent Hubbard atoms there are
by analyzing unperturbed occupations.
2 = Find how many Hubbard atoms to perturb based on
how many different Hubbard atomic types there are.
Warning: atoms which have the same type but which
are inequivalent by symmetry or which have different
occupations will not be distinguished in this case
(use option 1 or 3 instead).
3 = Find how many inequivalent Hubbard atoms
there are using symmetry. Atoms which have the
same type but are not equivalent by symmetry will
be distinguished in this case.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help docc_thr -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>docc_thr</b></big>
</li>
<br><li> <em>Type: </em>REAL</li>
<br><li> <em>Default: </em> 5.D-5
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Threshold for a comparison of unperturbed occupations
which is needed for the selection of atoms which must
be perturbed. Can be used only when "find_atpert" = 1.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help skip_type -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variables: </em><big><b>skip_type(i), i=1,ntyp</b></big>
</li>
<br><li> <em>Type: </em>LOGICAL</li>
<br><li> <em>Default: </em> skip_type(i) = .false.
</li>
<br><li> <em>See: </em> equiv_type
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
"skip_type"(i), where i runs over types of atoms.
If "skip_type"(i)=.true. then no linear-response
calculation will be performed for the i-th atomic type:
in this case "equiv_type"(i) must be specified, otherwise
the HP code will stop. This option is useful if the
system has atoms of the same type but opposite spin
pollarizations (anti-ferromagnetic case).
This keyword cannot be used when "find_atpert" = 1.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help equiv_type -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variables: </em><big><b>equiv_type(i), i=1,ntyp</b></big>
</li>
<br><li> <em>Type: </em>INTEGER</li>
<br><li> <em>Default: </em> equiv_type(i) = 0
</li>
<br><li> <em>See: </em> skip_type
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
"equiv_type"(i), where i runs over types of atoms.
"equiv_type"(i)=j, will make type i equivalent to type j
(useful when nspin=2). Such a merging of types is done
only at the post-processing stage.
This keyword cannot be used when "find_atpert" = 1.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help perturb_only_atom -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variables: </em><big><b>perturb_only_atom(i), i=1,ntyp</b></big>
</li>
<br><li> <em>Type: </em>LOGICAL</li>
<br><li> <em>Default: </em> perturb_only_atom(i) = .false.
</li>
<br><li> <em>See: </em> compute_hp
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
If "perturb_only_atom"(i)=.true. then only the i-th
atom will be perturbed and considered in the run.
This variable is useful when one wants to split
the whole calculation on parts.
<b>Note:</b> this variable has a higher priority than "skip_type".
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help start_q -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>start_q</b></big>
</li>
<br><li> <em>Type: </em>INTEGER</li>
<br><li> <em>Default: </em> 1
</li>
<br><li> <em>See: </em> last_q, sum_pertq
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Computes only the q points from "start_q" to "last_q".
<b>IMPORTANT:</b> "start_q" must be smaller or equal to
the total number of q points found.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help last_q -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>last_q</b></big>
</li>
<br><li> <em>Type: </em>INTEGER</li>
<br><li> <em>Default: </em> number of q points
</li>
<br><li> <em>See: </em> start_q, sum_pertq
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Computes only the q points from "start_q" to "last_q".
<b>IMPORTANT:</b> "last_q" must be smaller or equal to
the total number of q points found.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help sum_pertq -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>sum_pertq</b></big>
</li>
<br><li> <em>Type: </em>LOGICAL</li>
<br><li> <em>Default: </em> .false.
</li>
<br><li> <em>See: </em> start_q, last_q, perturb_only_atom
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
If it is set to .true. then the HP code will collect
pieces of the response occupation matrices for all
q points. This variable should be used only when
"start_q", "last_q" and "perturb_only_atom" are used.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help compute_hp -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>compute_hp</b></big>
</li>
<br><li> <em>Type: </em>LOGICAL</li>
<br><li> <em>Default: </em> .false.
</li>
<br><li> <em>See: </em> perturb_only_atom
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
If it is set to .true. then the HP code will collect
pieces of the chi0 and chi matrices (which must have
been produced in previous runs) and then compute
Hubbard parameters. The HP code will look for files
tmp_dir/HP/prefix.chi.i.dat. Note that all files
prefix.chi.i.dat (where i runs over all perturbed
atoms) must be placed in one folder tmp_dir/HP/.
"compute_hp"=.true. must be used only when the
calculation was parallelized over perturbations.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help conv_thr_chi -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>conv_thr_chi</b></big>
</li>
<br><li> <em>Type: </em>REAL</li>
<br><li> <em>Default: </em> 1.D-5
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Convergence threshold for the response function chi,
which is defined as a trace of the response
occupation matrix.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help thresh_init -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>thresh_init</b></big>
</li>
<br><li> <em>Type: </em>REAL</li>
<br><li> <em>Default: </em> 1.D-14
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Initial threshold for the solution of the linear
system (first iteration). Needed to converge the
bare (non-interacting) response function chi0.
The specified value will be multiplied by the
number of electrons in the system.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help ethr_nscf -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>ethr_nscf</b></big>
</li>
<br><li> <em>Type: </em>REAL</li>
<br><li> <em>Default: </em> 1.D-11
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Threshold for the convergence of eigenvalues during
the iterative diagonalization of the Hamiltonian in
the non-self-consistent-field (NSCF) calculation at
k and k+q points. Note, this quantity is NOT extensive.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help niter_max -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>niter_max</b></big>
</li>
<br><li> <em>Type: </em>INTEGER</li>
<br><li> <em>Default: </em> 100
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Maximum number of iterations in the iterative
solution of the linear-response Kohn-Sham equations.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help nmix -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>nmix</b></big>
</li>
<br><li> <em>Type: </em>INTEGER</li>
<br><li> <em>Default: </em> 4
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Number of iterations used in potential mixing
using the modified Broyden method. See:
D.D. Johnson, "PRB 38, 12807 (1988)".
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help num_neigh -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>num_neigh</b></big>
</li>
<br><li> <em>Type: </em>INTEGER</li>
<br><li> <em>Default: </em> 6
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Number of nearest neighbors of every Hubbard atom which
will be considered when writting Hubbard V parameters to
the file parameters.out, which can be used in the
subsequent DFT+U+V calculation. This keyword is used only
when lda_plus_u_kind = 2 (post-processing stage).
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help lmin -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>lmin</b></big>
</li>
<br><li> <em>Type: </em>INTEGER</li>
<br><li> <em>Default: </em> 2
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Minimum value of the orbital quantum number of the Hubbard
atoms starting from which (and up to the maximum l in the
system) Hubbard V will be written to the file parameters.out.
"lmin" refers to the orbital quantum number of the atom
corresponding to the first site-index in Hubbard_V(:,:,:).
This keyword is used only when lda_plus_u_kind = 2 and only
in the post-processing stage. Example: "lmin"=1 corresponds to
writing to file V between e.g. oxygen (with p states) and its
neighbors, and including V between transition metals (with d
states) and their neighbors. Instead, when "lmin"=2 only the
latter will be written to parameters.out.
</pre></blockquote>
</ul>
}
# ------------------------------------------------------------------------
help rmax -helpfmt helpdoc -helptext {
<ul>
<li> <em>Variable: </em><big><b>rmax</b></big>
</li>
<br><li> <em>Type: </em>REAL</li>
<br><li> <em>Default: </em> 100.D0
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Maximum distance (in Bohr) between two atoms to search
neighbors (used only at the postprocessing step when
lda_plus_u_kind = 2). This keyword is useful when there
are e.g. defects in the system.
</pre></blockquote>
</ul>
}

205
GUI/PWgui/modules/hp/hp.tcl Normal file
View File

@ -0,0 +1,205 @@
source commands.tcl
module HP\#auto -title "PWSCF GUI: module HP.x" -script {
readfilter ::pwscf::hpReadFilter
#
# Namelist: INPUTHP
#
namelist inputhp -name "INPUTHP" {
separator -label "--- Control specs ---"
var prefix {
-label "Prefix of outdir files saved by program PW.X (prefix):"
-fmt %S -validate string
}
var outdir {
-label "Outdir directory where PW.X files resides (outdir):"
-widget entrydirselectquote
-fmt %S -validate string
}
var iverbosity {
-label "Verbosity (iverbosity):"
-textvalue { "1 = low" "2 = medium" "3 = high" "4 = highest" }
-value { 1 2 3 4 }
-validate int
-widget optionmenu
}
var max_seconds {
-label "Maximum CPU time \[in seconds\] (max_seconds):"
-validate posint
}
separator -label "--- Q-points ---"
group q_points {
packwidgets left
var nq1 -label "nq1:" -widget spinint -validate posint
var nq2 -label "nq2:" -widget spinint -validate posint
var nq3 -label "nq3:" -widget spinint -validate posint
}
var skip_equivalence_q {
-label "Skip the equivalence analysis of q points (skip_equivalence_q):"
-widget radiobox
-textvalue { Yes No }
-value { .true. .false. }
}
group qp -decor normal {
auxilvar only_q {
-label "Computes only the q points from start_q to last_q:"
-widget radiobox
-textvalue { Yes No }
-value { .true. .false. }
}
group start_last_q {
packwidgets left
var start_q {
-label "First q-point (start_q):"
-validate int
}
var last_q {
-label "Last q-point (last_q):"
-validate int
}
}
var sum_pertq {
-label "Collect pieces of the response occupation matrices (sum_pertq):"
-widget radiobox
-textvalue { Yes No }
-value { .true. .false. }
}
}
separator -label "--- Perturbations ---"
var determine_num_pert_only {
-label "Determine the number of perturbations (determine_num_pert_only):"
-widget radiobox
-textvalue { Yes No }
-value { .true. .false. }
}
var find_atpert {
-label "Method for searching which atoms must be perturbed (find_atpert):"
-textvalue {
"1 = find atoms by analyzing unperturbed occupations"
"2 = find atoms from different Hubbard atomic types"
"3 = find atoms by symmetry"
}
-value { 1 2 3 }
-widget optionmenu
}
var docc_thr {
-label "Threshold for a comparison of unperturbed occupations (docc_thr):"
-validate fortranreal
}
separator -label "--- Atom types specs ---"
group ntyp_vars {
auxilvar ntyp {
-label "Number of type of atoms:"
-validate posint
-widget spinint
-default 1
}
dimension skip_type {
-label "Skip i-th atom-type in linear-response calculation (skip_type):"
-widget radiobox
-textvalue { Yes No }
-value { .true. .false. }
-start 1 -end 1
}
dimension equiv_type {
-label "Make atom-type i equivalent to atom-type j (equiv_type):"
-validate posint
-start 1 -end 1
}
dimension perturb_only_atom {
-label "Perturb only i-th atom types (perturb_only_atom):"
-widget radiobox
-textvalue { .true. .false. }
-value { .true. .false. }
-start 1 -end 1
}
}
separator -label "--- Miscellaneous ---"
var compute_hp {
-label "Collect pieces of the chi0 and chi matrices (compute_hp):"
-widget radiobox
-textvalue { Yes No }
-value { .true. .false. }
}
var conv_thr_chi {
-label "Convergence threshold for the response function chi (conv_thr_chi):"
-validate fortranreal
}
var thresh_init {
-label "Threshold for the 1st iteration of the linear system (thresh_init):"
-validate fortranreal
}
var ethr_nscf {
-label "Threshold for the convergence of eigenvalues in NSCF (ethr_nscf):"
-validate fortranreal
}
var niter_max {
-label "Maximum number of iterations for linear-response calc. (niter_max):"
-validate int
}
var alpha_mix {
-variable alpha_mix(1)
-label "Mixing parameter (alpha_mix(1)):"
-validate fortranreal
}
var nmix {
-label "Number of iterations to use in Broyden mixing (nmix):"
-validate int
}
var num_neigh {
-label "Number of neighbors of every Hubbard atom to consider for V (num_neigh):"
-validate int
}
var lmin {
-label "Minimum orbital quantum number of the Hubbard atoms (lmin):"
-validate int
}
var rmax {
-label "Maximum neighbor distance (in Bohr) between two atoms (rmax):"
-validate fortranreal
}
}
# ----------------------------------------------------------------------
# take care of specialties
# ----------------------------------------------------------------------
source hp-event.tcl
# ------------------------------------------------------------------------
# source the HELP file
# ------------------------------------------------------------------------
source hp-help.tcl
}

View File

@ -248,9 +248,9 @@ help fildrho -helpfmt helpdoc -helptext {
</li>
<blockquote><pre>
File where the charge density responses are written. Note that the file
will actually be saved as ${outdir}/_ph0/${prefix}.${fildrho}1
where ${outdir}, ${prefix} and ${fildrho} are the values of the
corresponding input variables
will actually be saved as <b>${outdir}/_ph0/${prefix}.${fildrho}1</b>
where <b>${outdir},</b> <b>${prefix}</b> and <b>${fildrho}</b> are the values of the
corresponding input variables
</pre></blockquote>
</ul>
@ -291,6 +291,10 @@ If .true. in a q=0 calculation for a non metal the
macroscopic dielectric constant of the system is
computed. Do not set "epsil" to .true. if you have a
metallic system or q/=0: the code will complain and stop.
Note: the input value of "epsil" will be ignored if "ldisp"=.true.
(the code will automatically set "epsil" to .false. for metals,
to .true. for insulators: see routine PHonon/PH/prepare_q.f90).
</pre></blockquote>
</ul>

View File

@ -560,7 +560,7 @@ tracevar ion_velocities w {
# ------------------------------------------------------------------------
postprocess {
varset calculation -value 'scf'
varset gate -value {}
varset gate -value {}
varset ibrav -value {}
varset how_lattice -value celldm
varset nspin -value {}

View File

@ -144,8 +144,8 @@ an interrupted calculation. Do not use to start a new one, or to
perform a non-scf calculations. Works only if the calculation was
cleanly stopped using variable "max_seconds", or by user request
with an "exit file" (i.e.: create a file "prefix".EXIT, in directory
"outdir"; see variables "prefix", "outdir"). Overrides "startingwfc"
and "startingpot".
"outdir"; see variables "prefix", "outdir"). The default for
"startingwfc" and "startingpot" is set to 'file'.
</pre></dd>
</dl>
</blockquote>
@ -170,7 +170,7 @@ This flag controls the way wavefunctions are stored to disk :
.TRUE. collect wavefunctions from all processors, store them
into the output data directory "outdir"/"prefix".save
The resulting format is portable to a different number
of processor, or different kind of parallelization
of processors, or different kind of parallelization
.FALSE. OBSOLETE - NO LONGER IMPLEMENTED
do not collect wavefunctions, leave them in temporary
@ -456,7 +456,9 @@ optimization step are not controlled by this option )
save charge to disk at each SCF step,
keep wavefunctions on disk (in "distributed" format),
save mixing data as well.
Do not use this option unless you have a good reason to
Do not use this option unless you have a good reason!
It is no longer needed to specify 'high' in order to be able
to restart from an interrupted calculation (see "restart_mode")
</pre></dd>
</dl>
<dl style="margin-left: 1.5em;">
@ -492,10 +494,7 @@ do not save anything to disk
</dl>
<pre>
<b>Default</b> is <b>'low'</b> for the scf case, <b>'medium'</b> otherwise.
Note that the needed RAM increases as disk I/O decreases!
It is no longer needed to specify 'high' in order to be able
to restart from an interrupted calculation (see "restart_mode")
but you cannot restart in "disk_io"=='nowf' or 'none'
Note that the needed RAM increases as disk I/O decreases
</pre>
</blockquote>
</ul>
@ -1080,31 +1079,36 @@ help starting_magnetization -helpfmt helpdoc -helptext {
<li> <em>Variables: </em><big><b>starting_magnetization(i), i=1,ntyp</b></big>
</li>
<br><li> <em>Type: </em>REAL</li>
<br><li> <em>Default: </em> 0
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Starting spin polarization on atomic type 'i' in a spin
polarized calculation. Values range between -1 (all spins
down for the valence electrons of atom type 'i') to 1
(all spins up). Breaks the symmetry and provides a starting
point for self-consistency. The default value is zero, BUT a
value MUST be specified for AT LEAST one atomic type in spin
polarized calculations, unless you constrain the magnetization
(see "tot_magnetization" and "constrained_magnetization").
Note that if you start from zero initial magnetization, you
will invariably end up in a nonmagnetic (zero magnetization)
state. If you want to start from an antiferromagnetic state,
you may need to define two different atomic species
corresponding to sublattices of the same atomic type.
starting_magnetization is ignored if you are performing a
non-scf calculation, if you are restarting from a previous
run, or restarting from an interrupted run.
If you fix the magnetization with "tot_magnetization",
you should not specify starting_magnetization.
In the spin-orbit case starting with zero
polarized (LSDA or noncollinear/spin-orbit) calculation.
Allowed values range between -1 (all spins down for the
valence electrons of atom type 'i') to 1 (all spins up).
If you expect a nonzero magnetization in your ground state,
you MUST either specify a nonzero value for at least one
atomic type, or constrain the magnetization using variable
"tot_magnetization" for LSDA, "constrained_magnetization"
for noncollinear/spin-orbit calculations. If you don't,
you will get a nonmagnetic (zero magnetization) state.
In order to perform LSDA calculations for an antiferromagnetic
state, define two different atomic species corresponding to
sublattices of the same atomic type.
<b>NOTE 1:</b> "starting_magnetization" is ignored in most BUT NOT ALL
cases in non-scf calculations: it is safe to keep the same
values for the scf and subsequent non-scf calculation.
<b>NOTE 2:</b> If you fix the magnetization with
"tot_magnetization", do not specify "starting_magnetization".
<b>NOTE 3:</b> In the noncollinear/spin-orbit case, starting with zero
starting_magnetization on all atoms imposes time reversal
symmetry. The magnetization is never calculated and
kept zero (the internal variable domag is .FALSE.).
symmetry. The magnetization is never calculated and is
set to zero (the internal variable domag is set to .FALSE.).
</pre></blockquote>
</ul>
@ -1907,13 +1911,14 @@ is not configured there.
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Specify "lda_plus_u" = .TRUE. to enable DFT+U calculations
Specify "lda_plus_u" = .TRUE. to enable <b>DFT+U,</b> <b>DFT+U+V,</b> or <b>DFT+U+J</b> calculations.
See: Anisimov, Zaanen, and Andersen, "PRB 44, 943 (1991)";
Anisimov et al., "PRB 48, 16929 (1993)";
Liechtenstein, Anisimov, and Zaanen, "PRB 52, R5467 (1994)".
You must specify, for each species with a U term, the value of
U and (optionally) alpha, J of the Hubbard model (all in eV):
see "lda_plus_u_kind", "Hubbard_U", "Hubbard_alpha", "Hubbard_J"
You must specify, for each Hubbard atom, the value of
U and (optionally) V, J, alpha of the Hubbard model (all in eV):
see "lda_plus_u_kind", "Hubbard_U", "Hubbard_V",
"Hubbard_J", "Hubbard_alpha"
</pre></blockquote>
</ul>
@ -1930,18 +1935,32 @@ help lda_plus_u_kind -helpfmt helpdoc -helptext {
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Specifies the type of calculation:
0 DFT+U simplified version of Cococcioni and de Gironcoli,
"PRB 71, 035105 (2005)", using "Hubbard_U"
1 DFT+U rotationally invariant scheme of Liechtenstein et al.,
using "Hubbard_U" and "Hubbard_J"
2 DFT+U+V simplified version of Campo Jr and Cococcioni,
J. Phys.: Condens. Matter 22, 055602 (2010), using "Hubbard_V"
</pre></blockquote>
<blockquote>
<pre> Specifies the type of calculation:
</pre>
<dl style="margin-left: 1.5em;">
<dt><tt><b>0</b> :</tt></dt>
<dd><pre style="margin-top: 0em; margin-bottom: -1em;">
DFT+U simplified version of Cococcioni and de Gironcoli,
"PRB 71, 035105 (2005)", using "Hubbard_U"
</pre></dd>
</dl>
<dl style="margin-left: 1.5em;">
<dt><tt><b>1</b> :</tt></dt>
<dd><pre style="margin-top: 0em; margin-bottom: -1em;">
DFT+U rotationally invariant scheme of Liechtenstein et al.,
using "Hubbard_U" and "Hubbard_J"
</pre></dd>
</dl>
<dl style="margin-left: 1.5em;">
<dt><tt><b>2</b> :</tt></dt>
<dd><pre style="margin-top: 0em; margin-bottom: -1em;">
DFT+U+V simplified version of Campo Jr and Cococcioni,
J. Phys.: Condens. Matter 22, 055602 (2010), "doi:10.1088/0953-8984/22/5/055602",
using "Hubbard_V"
</pre></dd>
</dl>
</blockquote>
</ul>
}
@ -1996,9 +2015,14 @@ help Hubbard_alpha -helpfmt helpdoc -helptext {
</li>
<blockquote><pre>
Hubbard_alpha(i) is the perturbation (on atom i, in eV)
used to compute U with the linear-response method of
used to compute U (and V) with the linear-response method of
Cococcioni and de Gironcoli, "PRB 71, 035105 (2005)"
(only for "lda_plus_u_kind"=0)
(only for "lda_plus_u_kind"=0 and 2).
Note: Hubbard U and V can be computed using the HP code
which is based on density-functional perturbation theory,
and it gives exactly the same result as the method of
Cococcioni and de Gironcoli.
</pre></blockquote>
</ul>
@ -2019,7 +2043,7 @@ help Hubbard_beta -helpfmt helpdoc -helptext {
Hubbard_beta(i) is the perturbation (on atom i, in eV)
used to compute J0 with the linear-response method of
Cococcioni and de Gironcoli, "PRB 71, 035105 (2005)"
(only for "lda_plus_u_kind"=0). See also
(only for "lda_plus_u_kind"=0 and 2). See also
"PRB 84, 115108 (2011)".
</pre></blockquote>
</ul>
@ -2346,8 +2370,8 @@ LAMBDA * SUM_{i,itype} ( magnetic_moment(i,itype) - mcons(i,itype) )**2
where i runs over the cartesian components (or just z
in the collinear case) and itype over the types (1-ntype).
mcons(:,:) array is defined from starting_magnetization,
(and angle1, angle2 in the non-collinear case). lambda is
a real number
(also from angle1, angle2 in the noncollinear case).
lambda is a real number
</pre></dd>
</dl>
<dl style="margin-left: 1.5em;">
@ -3088,7 +3112,7 @@ help uniqueb -helpfmt helpdoc -helptext {
Used only for monoclinic lattices. If .TRUE. the b
unique ibrav (-12 or -13) are used, and symmetry
equivalent positions are chosen assuming that the
two fold axis or the mirror normal is parallel to the
twofold axis or the mirror normal is parallel to the
b axis. If .FALSE. it is parallel to the c axis.
</pre></blockquote>
</ul>

View File

@ -667,12 +667,13 @@ module PW -title "PWSCF GUI: module PW.x" -script {
group hubbard -decor none {
var lda_plus_u_kind {
-label "type of LDA + U calculation (lda_plus_u_kind):"
-label "Type of LDA + U calculation (lda_plus_u_kind):"
-textvalue {
"simplified version of Cococcioni and de Gironcoli"
"rotationally invariant scheme of Liechtenstein et al."
"DFT+U+V simplified version of Campo Jr and Cococcioni"
}
-value {0 1}
-value {0 1 2}
-widget radiobox
}

View File

@ -159,6 +159,27 @@ proc ::pwscf::readFilter::purifyCardLine {cardLine} {
}
proc ::pwscf::readFilter::ntypIndex {line varList {maxIndex 0}} {
# PURPOSE
# search for the largest index of var()-dimension in $line and
# return the largest index found, where "var" is a collection of
# variables specified by $varList; $line is a line of input
foreach var $varList {
foreach field [split $line =] {
set pattern [subst -nocommands -nobackslashes {${var}\([0-9]+\)}]
if { [regexp -nocase \
[subst -nocommands -nobackslashes {${var}\([0-9]+\)}] \
$field matchVar] } {
regexp {[0-9]+} $matchVar index
if { $index > $maxIndex } {
set maxIndex $index
}
}
}
}
return $maxIndex
}
proc ::pwscf::readFilter::amassIndex {line {maxIndex 0}} {
# PURPOSE
# search for the largest index of amass()-dimension in $line and
@ -186,7 +207,11 @@ proc ::pwscf::readFilter::default {moduleObj channel {filterMode logical} {replL
# Variable: filterMode
# Description:
# mode=amass search for largest amass(*) index and assign the
# ntyp variables
# ntyp variable
#
#
# mode={ntyp varList} search for largest index in the list of
# variables specified by var(*) and assign the ntyp variable
#
# mode=logical repleace all possible values of Fortran logical
# variables with .true. or .false.
@ -201,12 +226,21 @@ proc ::pwscf::readFilter::default {moduleObj channel {filterMode logical} {replL
# Description: replList are double list of the form
# { {replaceFromList1 replaceToItem1} {replaceFromList2 replaceToItem2} ... }
#
set amass 0
set logical 0
set amass 0
set logical 0
set verbosity 0
if { [string match "*amass*" $filterMode] } { set amass 1 }
if { [string match "*logical*" $filterMode] } { set logical 1 }
set ntyp 0
if { [string match "*amass*" $filterMode] } { set amass 1 }
if { [string match "*logical*" $filterMode] } { set logical 1 }
if { [string match "*verbosity*" $filterMode] } { set verbosity 1 }
if { [string match "*ntyp*" $filterMode] } {
foreach mode $filterMode {
if { [lindex $mode 0] == "ntyp" } {
set ntyp 1
set varList [lindex $mode 1]
}
}
}
set maxIndex 0
set output {}
@ -215,6 +249,9 @@ proc ::pwscf::readFilter::default {moduleObj channel {filterMode logical} {replL
if { $amass } {
set maxIndex [amassIndex $_line $maxIndex]
}
if { $ntyp } {
set maxIndex [ntypIndex $_line $varList $maxIndex]
}
if { $logical } {
set _line [logicalFlag $_line]
}
@ -233,7 +270,8 @@ proc ::pwscf::readFilter::default {moduleObj channel {filterMode logical} {replL
}
append output $_line\n
}
if { $maxIndex > 0 && $amass } {
if { $maxIndex > 0 && ( $amass || $ntyp ) } {
$moduleObj varset ntyp -value $maxIndex
}
# close the old channel

View File

@ -74,27 +74,32 @@ $gui addModule module neb "NEB.X's neb.dat" [file join $env(PWGUI) modules neb n
}
$gui addModule module ph "PH.X" [file join $env(PWGUI) modules ph ph.tcl] {
{{PH.X Input Files} {*.ph.in *.ph.inp}}
{{PH.X Input Files} {*.ph.in *.ph.inp *.in *.inp}}
}
$gui addModule module pp "PP.X" [file join $env(PWGUI) modules pp pp.tcl] {
{{PP.X Input Files} {*.pp.in *.pp.inp}}
{{PP.X Input Files} {*.pp.in *.pp.inp *.in *.inp}}
}
$gui addModule module pr "ProjWFC.X" [file join $env(PWGUI) modules projwfc projwfc.tcl] {
{{ProjWFC.X Input Files} {*.pr.in *.pr.inp}}
{{ProjWFC.X Input Files} {*.pr.in *.pr.inp *.in *.inp}}
}
$gui addModule module bands "Bands.X" [file join $env(PWGUI) modules bands bands.tcl] {
{{Bands.X Input Files} {*.bands.in *.bands.inp}}
{{Bands.X Input Files} {*.bands.in *.bands.inp *.in *.inp}}
}
$gui addModule module dos "Dos.X" [file join $env(PWGUI) modules dos dos.tcl] {
{{Dos.X Input Files} {*.dos.in *.dos.inp}}
{{Dos.X Input Files} {*.dos.in *.dos.inp *.in *.inp}}
}
#$gui addModule module d3 "D3.X" [file join $env(PWGUI) modules d3 d3.tcl] {
# {{D3.X Input Files} {*.d3.in *.d3.inp}}
# {{D3.X Input Files} {*.d3.in *.d3.inp *.in *.inp}}
#}
$gui addModule module ld "LD1.X" [file join $env(PWGUI) modules atomic atomic.tcl] {
{{LD1.X Input Files} {*.ld1.in *.ld1.inp}}
{{LD1.X Input Files} {*.ld1.in *.ld1.inp *.in *.inp}}
}
$gui addModule module hp "HP.X" [file join $env(PWGUI) modules hp hp.tcl] {
{{HP.X Input Files} {*.hp.in *.hp.inp *.in *.inp}}
}
#$gui addModule cascade pwscf "PWscf files ..." {
# $gui addModule command ...
# ...
@ -124,6 +129,7 @@ $gui addHelp help bands "Bands.X Input Syntax" [file join $env(PWGUI) doc p
$gui addHelp help dos "Dos.X Input Syntax" [file join $env(PWGUI) doc pwdocs INPUT_DOS.html] none
#$gui addHelp help d3 "D3.X Input Syntax" [file join $env(PWGUI) doc pwdocs INPUT_D3.html] none
$gui addHelp help ld "LD1.X Input Syntax" [file join $env(PWGUI) doc pwdocs INPUT_LD1.html] none
$gui addHelp help hp "HP.X Input Syntax" [file join $env(PWGUI) doc pwdocs INPUT_HP.html] none
$gui addHelp separator

View File

@ -7,16 +7,6 @@
# a script that loads the command.
set auto_index(::pwscf::_uniqueTabname) [list source [file join $dir auxil.itcl]]
set auto_index(::pwscf::view::inputByPager) [list source [file join $dir view.itcl]]
set auto_index(::pwscf::view::structByXcrysden) [list source [file join $dir view.itcl]]
set auto_index(::pwscf::view::defaultPager) [list source [file join $dir view.itcl]]
set auto_index(::pwscf::settings) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsOK) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsApply) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsSave) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsSave_Unix) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsSaveToFile) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsModule) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::edit::inputByEditor) [list source [file join $dir edit.itcl]]
set auto_index(::pwscf::edit::defaultEditor) [list source [file join $dir edit.itcl]]
set auto_index(::pwscf::edit::_defaultEditorCancel) [list source [file join $dir edit.itcl]]
@ -24,6 +14,24 @@ set auto_index(::pwscf::edit::_defaultEditorClose) [list source [file join $dir
set auto_index(::pwscf::edit::_defaultEditorDone) [list source [file join $dir edit.itcl]]
set auto_index(::pwscf::edit::_defaultEditorSave) [list source [file join $dir edit.itcl]]
set auto_index(::pwscf::edit::_defaultEditorSaveAs) [list source [file join $dir edit.itcl]]
set auto_index(::pwscf::init) [list source [file join $dir init.itcl]]
set auto_index(::pwscf::checkCmd) [list source [file join $dir init.itcl]]
set auto_index(::pwscf::menustate::editable) [list source [file join $dir menustate.itcl]]
set auto_index(::pwscf::menustate::xcrysden) [list source [file join $dir menustate.itcl]]
set auto_index(::pwscf::menustate::runnable) [list source [file join $dir menustate.itcl]]
set auto_index(::pwscf::menustate::runnableXC) [list source [file join $dir menustate.itcl]]
set auto_index(::pwscf::readFilter::replaceFlag) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::replaceVarFlag) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::logicalFlag) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::verbosityFlag) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::purifyCardLine) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::ntypIndex) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::amassIndex) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::default) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::findNamelists) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::findCards) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::findNamelistsAndCards) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::selectFileRoot) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::run::run) [list source [file join $dir run.itcl]]
set auto_index(::pwscf::run::runAs) [list source [file join $dir run.itcl]]
set auto_index(::pwscf::run::runAndXC) [list source [file join $dir run.itcl]]
@ -36,20 +44,13 @@ set auto_index(::pwscf::run::_configApply) [list source [file join $dir run.itcl
set auto_index(::pwscf::run::_cancel) [list source [file join $dir run.itcl]]
set auto_index(::pwscf::run::_mkdirOutdir) [list source [file join $dir run.itcl]]
set auto_index(::pwscf::run::_displayXC) [list source [file join $dir run.itcl]]
set auto_index(::pwscf::menustate::editable) [list source [file join $dir menustate.itcl]]
set auto_index(::pwscf::menustate::xcrysden) [list source [file join $dir menustate.itcl]]
set auto_index(::pwscf::menustate::runnable) [list source [file join $dir menustate.itcl]]
set auto_index(::pwscf::menustate::runnableXC) [list source [file join $dir menustate.itcl]]
set auto_index(::pwscf::init) [list source [file join $dir init.itcl]]
set auto_index(::pwscf::checkCmd) [list source [file join $dir init.itcl]]
set auto_index(::pwscf::readFilter::replaceFlag) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::replaceVarFlag) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::logicalFlag) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::verbosityFlag) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::purifyCardLine) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::amassIndex) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::default) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::findNamelists) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::findCards) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::readFilter::findNamelistsAndCards) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::selectFileRoot) [list source [file join $dir modutil.itcl]]
set auto_index(::pwscf::settings) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsOK) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsApply) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsSave) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsSave_Unix) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsSaveToFile) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::_settingsModule) [list source [file join $dir settings.itcl]]
set auto_index(::pwscf::view::inputByPager) [list source [file join $dir view.itcl]]
set auto_index(::pwscf::view::structByXcrysden) [list source [file join $dir view.itcl]]
set auto_index(::pwscf::view::defaultPager) [list source [file join $dir view.itcl]]

View File

@ -1,7 +1,7 @@
LATEX = pdflatex
LATEX2HTML = latex2html
VERSION = 6.6
VERSION = 6.7
PDFS = user_guide.pdf
AUXS = $(PDFS:.pdf=.aux)

Binary file not shown.

View File

@ -52,7 +52,7 @@
\author{}
\date{}
\def\qeImage{../../../Doc/quantum_espresso.pdf}
\def\qeImage{../../../Doc/quantum_espresso.png}
\title{
\includegraphics[width=5cm]{\qeImage} \\

View File

@ -1,5 +1,5 @@
TOPDIR = $(shell cd ../..; pwd)
VERSION = 6.6
VERSION = 6.7
GEN_MODE = $(TOPDIR)/dev-tools/gen-emacs-mode
LATEX = pdflatex

View File

@ -114,46 +114,47 @@ input_description -distribution {Quantum Espresso} -package PWscf -program hp.x
info {
Threshold for a comparison of unperturbed occupations
which is needed for the selection of atoms which must
be perturbed. Can be used only when find_atpert = 1.
be perturbed. Can be used only when @ref find_atpert = 1.
}
}
var skip_type -type LOGICAL {
default { .false. }
dimension skip_type -start 1 -end ntyp -type LOGICAL {
default { skip_type(i) = .false. }
see { equiv_type }
info {
skip_type(i), where i runs over types of atoms.
If skip_type(i)=.true. then no linear-response
@ref skip_type(i), where i runs over types of atoms.
If @ref skip_type(i)=.true. then no linear-response
calculation will be performed for the i-th atomic type:
in this case equiv_type(i) must be specified, otherwise
in this case @ref equiv_type(i) must be specified, otherwise
the HP code will stop. This option is useful if the
system has atoms of the same type but opposite spin
pollarizations (anti-ferromagnetic case).
This keyword cannot be used when find_atpert = 1.
This keyword cannot be used when @ref find_atpert = 1.
}
}
var equiv_type -type INTEGER {
default { 0 }
dimension equiv_type -start 1 -end ntyp -type INTEGER {
default { equiv_type(i) = 0 }
see { skip_type }
info {
equiv_type(i), where i runs over types of atoms.
equiv_type(i)=j, will make type i equivalent to type j
@ref equiv_type(i), where i runs over types of atoms.
@ref equiv_type(i)=j, will make type i equivalent to type j
(useful when nspin=2). Such a merging of types is done
only at the post-processing stage.
This keyword cannot be used when find_atpert = 1.
This keyword cannot be used when @ref find_atpert = 1.
}
}
var perturb_only_atom -type LOGICAL {
default { .false. }
dimension perturb_only_atom -start 1 -end ntyp -type LOGICAL {
default { perturb_only_atom(i) = .false. }
see { compute_hp }
info {
If perturb_only_atom(i)=.true. then only the i-th
If @ref perturb_only_atom(i)=.true. then only the i-th
atom will be perturbed and considered in the run.
This variable is useful when one wants to split
the whole calculation on parts. Note: this variable
has a higher priority than skip_type.
the whole calculation on parts.
@b Note: this variable has a higher priority than @ref skip_type.
}
}
@ -161,8 +162,9 @@ input_description -distribution {Quantum Espresso} -package PWscf -program hp.x
default { 1 }
see { last_q, sum_pertq }
info {
Computes only the q points from start_q to last_q.
IMPORTANT: start_q must be smaller or equal to
Computes only the q points from @ref start_q to @ref last_q.
@b IMPORTANT: @ref start_q must be smaller or equal to
the total number of q points found.
}
}
@ -171,8 +173,9 @@ input_description -distribution {Quantum Espresso} -package PWscf -program hp.x
default { number of q points }
see { start_q, sum_pertq }
info {
Computes only the q points from start_q to last_q.
IMPORTANT: last_q must be smaller or equal to
Computes only the q points from @ref start_q to @ref last_q.
@b IMPORTANT: @ref last_q must be smaller or equal to
the total number of q points found.
}
}
@ -184,7 +187,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program hp.x
If it is set to .true. then the HP code will collect
pieces of the response occupation matrices for all
q points. This variable should be used only when
start_q, last_q and perturb_only_atom are used.
@ref start_q, @ref last_q and @ref perturb_only_atom are used.
}
}
@ -199,7 +202,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program hp.x
tmp_dir/HP/prefix.chi.i.dat. Note that all files
prefix.chi.i.dat (where i runs over all perturbed
atoms) must be placed in one folder tmp_dir/HP/.
compute_hp=.true. must be used only when the
@ref compute_hp=.true. must be used only when the
calculation was parallelized over perturbations.
}
}
@ -247,7 +250,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program hp.x
info {
Mixing parameter (for the i-th iteration) for updating
the response SCF potential using the modified Broyden
method: D.D. Johnson, PRB 38, 12807 (1988).
method. See: D.D. Johnson, PRB 38, 12807 (1988).
}
}
@ -255,7 +258,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program hp.x
default { 4 }
info {
Number of iterations used in potential mixing
using the modified Broyden method
using the modified Broyden method. See:
D.D. Johnson, PRB 38, 12807 (1988).
}
}
@ -277,13 +280,13 @@ input_description -distribution {Quantum Espresso} -package PWscf -program hp.x
Minimum value of the orbital quantum number of the Hubbard
atoms starting from which (and up to the maximum l in the
system) Hubbard V will be written to the file parameters.out.
lmin refers to the orbital quantum number of the atom
@ref lmin refers to the orbital quantum number of the atom
corresponding to the first site-index in Hubbard_V(:,:,:).
This keyword is used only when lda_plus_u_kind = 2 and only
in the post-processing stage. Example: lmin=1 corresponds to
in the post-processing stage. Example: @ref lmin=1 corresponds to
writing to file V between e.g. oxygen (with p states) and its
neighbors, and including V between transition metals (with d
states) and their neighbors. Instead, when lmin=2 only the
states) and their neighbors. Instead, when @ref lmin=2 only the
latter will be written to parameters.out.
}
}

View File

@ -46,7 +46,7 @@
<tr><th style="margin: 3 3 3 10; background: #005789; background: linear-gradient(rgba(0,87,137,1),rgba(0,119,189,1)); color: #ffffee; ">
<h1 style="margin: 10 10 10 15; text-align: left;"> Input File Description </h1>
<h2 style="margin: 10 10 10 15; text-align: left;"> Program:
hp.x / PWscf / Quantum Espresso<span style="font-weight: normal;"> (version: 6.6)</span>
hp.x / PWscf / Quantum Espresso<span style="font-weight: normal;"> (version: 6.7)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">
@ -58,7 +58,7 @@
<p><a href="#idm3">INTRODUCTION</a></p>
<p><a href="#idm8">&amp;INPUTHP</a></p>
<blockquote>
<a href="#idm9">prefix</a> | <a href="#idm12">outdir</a> | <a href="#idm17">iverbosity</a> | <a href="#idm20">max_seconds</a> | <a href="#idm24">nq1</a> | <a href="#idm25">nq2</a> | <a href="#idm26">nq3</a> | <a href="#idm29">skip_equivalence_q</a> | <a href="#idm32">determine_num_pert_only</a> | <a href="#idm36">find_atpert</a> | <a href="#idm39">docc_thr</a> | <a href="#idm42">skip_type</a> | <a href="#idm46">equiv_type</a> | <a href="#idm50">perturb_only_atom</a> | <a href="#idm54">start_q</a> | <a href="#idm58">last_q</a> | <a href="#idm62">sum_pertq</a> | <a href="#idm66">compute_hp</a> | <a href="#idm70">conv_thr_chi</a> | <a href="#idm73">thresh_init</a> | <a href="#idm76">ethr_nscf</a> | <a href="#idm79">niter_max</a> | <a href="#idm82">alpha_mix(i)</a> | <a href="#idm86">nmix</a> | <a href="#idm90">num_neigh</a> | <a href="#idm93">lmin</a> | <a href="#idm96">rmax</a>
<a href="#idm9">prefix</a> | <a href="#idm12">outdir</a> | <a href="#idm17">iverbosity</a> | <a href="#idm20">max_seconds</a> | <a href="#idm24">nq1</a> | <a href="#idm25">nq2</a> | <a href="#idm26">nq3</a> | <a href="#idm29">skip_equivalence_q</a> | <a href="#idm32">determine_num_pert_only</a> | <a href="#idm36">find_atpert</a> | <a href="#idm39">docc_thr</a> | <a href="#idm43">skip_type</a> | <a href="#idm51">equiv_type</a> | <a href="#idm58">perturb_only_atom</a> | <a href="#idm65">start_q</a> | <a href="#idm73">last_q</a> | <a href="#idm81">sum_pertq</a> | <a href="#idm88">compute_hp</a> | <a href="#idm93">conv_thr_chi</a> | <a href="#idm96">thresh_init</a> | <a href="#idm99">ethr_nscf</a> | <a href="#idm102">niter_max</a> | <a href="#idm105">alpha_mix(i)</a> | <a href="#idm109">nmix</a> | <a href="#idm113">num_neigh</a> | <a href="#idm116">lmin</a> | <a href="#idm122">rmax</a>
</blockquote>
</blockquote>
</blockquote>
@ -204,7 +204,8 @@ calculations only for inequivalent q points.
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
If .true. determines the number of perturbations
(i.e. which atoms will be perturbed) and exits smoothly
without performing any calculation.
without performing any calculation. For DFT+U+V, it also
determines the indices of inter-site couples.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
@ -248,18 +249,18 @@ Method for searching of atoms which must be perturbed.
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
Threshold for a comparison of unperturbed occupations
which is needed for the selection of atoms which must
be perturbed. Can be used only when find_atpert = 1.
be perturbed. Can be used only when <a href="#find_atpert">find_atpert</a> = 1.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm42"></a><a name="skip_type"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm43"></a><a name="skip_type"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">skip_type</th>
<th width="20%" style="white-space: nowrap; text-align: left; vertical-align: top; background: #ffff99; padding: 2 2 2 10; ">skip_type(i), i=1,ntyp</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
</tr>
<tr>
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Default:</i></td>
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> .false.
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> skip_type(i) = .false.
</td>
</tr>
<tr>
@ -267,25 +268,25 @@ be perturbed. Can be used only when find_atpert = 1.
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "><a href="#equiv_type">equiv_type</a></td>
</tr>
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
skip_type(i), where i runs over types of atoms.
If skip_type(i)=.true. then no linear-response
<a href="#skip_type">skip_type</a>(i), where i runs over types of atoms.
If <a href="#skip_type">skip_type</a>(i)=.true. then no linear-response
calculation will be performed for the i-th atomic type:
in this case equiv_type(i) must be specified, otherwise
in this case <a href="#equiv_type">equiv_type</a>(i) must be specified, otherwise
the HP code will stop. This option is useful if the
system has atoms of the same type but opposite spin
pollarizations (anti-ferromagnetic case).
This keyword cannot be used when find_atpert = 1.
This keyword cannot be used when <a href="#find_atpert">find_atpert</a> = 1.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm46"></a><a name="equiv_type"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm51"></a><a name="equiv_type"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">equiv_type</th>
<th width="20%" style="white-space: nowrap; text-align: left; vertical-align: top; background: #ffff99; padding: 2 2 2 10; ">equiv_type(i), i=1,ntyp</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
</tr>
<tr>
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Default:</i></td>
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> 0
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> equiv_type(i) = 0
</td>
</tr>
<tr>
@ -293,22 +294,22 @@ This keyword cannot be used when find_atpert = 1.
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "><a href="#skip_type">skip_type</a></td>
</tr>
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
equiv_type(i), where i runs over types of atoms.
equiv_type(i)=j, will make type i equivalent to type j
<a href="#equiv_type">equiv_type</a>(i), where i runs over types of atoms.
<a href="#equiv_type">equiv_type</a>(i)=j, will make type i equivalent to type j
(useful when nspin=2). Such a merging of types is done
only at the post-processing stage.
This keyword cannot be used when find_atpert = 1.
This keyword cannot be used when <a href="#find_atpert">find_atpert</a> = 1.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm50"></a><a name="perturb_only_atom"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm58"></a><a name="perturb_only_atom"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">perturb_only_atom</th>
<th width="20%" style="white-space: nowrap; text-align: left; vertical-align: top; background: #ffff99; padding: 2 2 2 10; ">perturb_only_atom(i), i=1,ntyp</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
</tr>
<tr>
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Default:</i></td>
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> .false.
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> perturb_only_atom(i) = .false.
</td>
</tr>
<tr>
@ -316,15 +317,16 @@ This keyword cannot be used when find_atpert = 1.
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "><a href="#compute_hp">compute_hp</a></td>
</tr>
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
If perturb_only_atom(i)=.true. then only the i-th
If <a href="#perturb_only_atom">perturb_only_atom</a>(i)=.true. then only the i-th
atom will be perturbed and considered in the run.
This variable is useful when one wants to split
the whole calculation on parts. Note: this variable
has a higher priority than skip_type.
the whole calculation on parts.
<b>Note:</b> this variable has a higher priority than <a href="#skip_type">skip_type</a>.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm54"></a><a name="start_q"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm65"></a><a name="start_q"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">start_q</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -341,13 +343,14 @@ has a higher priority than skip_type.
</td>
</tr>
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
Computes only the q points from start_q to last_q.
IMPORTANT: start_q must be smaller or equal to
Computes only the q points from <a href="#start_q">start_q</a> to <a href="#last_q">last_q</a>.
<b>IMPORTANT:</b> <a href="#start_q">start_q</a> must be smaller or equal to
the total number of q points found.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm58"></a><a name="last_q"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm73"></a><a name="last_q"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">last_q</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -364,13 +367,14 @@ the total number of q points found.
</td>
</tr>
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
Computes only the q points from start_q to last_q.
IMPORTANT: last_q must be smaller or equal to
Computes only the q points from <a href="#start_q">start_q</a> to <a href="#last_q">last_q</a>.
<b>IMPORTANT:</b> <a href="#last_q">last_q</a> must be smaller or equal to
the total number of q points found.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm62"></a><a name="sum_pertq"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm81"></a><a name="sum_pertq"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">sum_pertq</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -390,11 +394,11 @@ the total number of q points found.
If it is set to .true. then the HP code will collect
pieces of the response occupation matrices for all
q points. This variable should be used only when
start_q, last_q and perturb_only_atom are used.
<a href="#start_q">start_q</a>, <a href="#last_q">last_q</a> and <a href="#perturb_only_atom">perturb_only_atom</a> are used.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm66"></a><a name="compute_hp"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm88"></a><a name="compute_hp"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">compute_hp</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -416,12 +420,12 @@ Hubbard parameters. The HP code will look for files
tmp_dir/HP/prefix.chi.i.dat. Note that all files
prefix.chi.i.dat (where i runs over all perturbed
atoms) must be placed in one folder tmp_dir/HP/.
compute_hp=.true. must be used only when the
<a href="#compute_hp">compute_hp</a>=.true. must be used only when the
calculation was parallelized over perturbations.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm70"></a><a name="conv_thr_chi"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm93"></a><a name="conv_thr_chi"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">conv_thr_chi</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
@ -438,7 +442,7 @@ occupation matrix.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm73"></a><a name="thresh_init"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm96"></a><a name="thresh_init"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">thresh_init</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
@ -457,7 +461,7 @@ number of electrons in the system.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm76"></a><a name="ethr_nscf"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm99"></a><a name="ethr_nscf"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">ethr_nscf</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
@ -475,7 +479,7 @@ k and k+q points. Note, this quantity is NOT extensive.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm79"></a><a name="niter_max"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm102"></a><a name="niter_max"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">niter_max</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -491,7 +495,7 @@ solution of the linear-response Kohn-Sham equations.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm82"></a><a name="alpha_mix"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm105"></a><a name="alpha_mix"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">alpha_mix(i)</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
@ -504,11 +508,11 @@ solution of the linear-response Kohn-Sham equations.
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
Mixing parameter (for the i-th iteration) for updating
the response SCF potential using the modified Broyden
method: D.D. Johnson, <a href="https://journals.aps.org/prb/abstract/10.1103/PhysRevB.38.12807">PRB 38, 12807 (1988)</a>.
method. See: D.D. Johnson, <a href="https://journals.aps.org/prb/abstract/10.1103/PhysRevB.38.12807">PRB 38, 12807 (1988)</a>.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm86"></a><a name="nmix"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm109"></a><a name="nmix"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">nmix</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -520,12 +524,12 @@ method: D.D. Johnson, <a href="https://journals.aps.org/prb/abstract/10.1103/Phy
</tr>
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
Number of iterations used in potential mixing
using the modified Broyden method
using the modified Broyden method. See:
D.D. Johnson, <a href="https://journals.aps.org/prb/abstract/10.1103/PhysRevB.38.12807">PRB 38, 12807 (1988)</a>.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm90"></a><a name="num_neigh"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm113"></a><a name="num_neigh"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">num_neigh</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -544,7 +548,7 @@ when lda_plus_u_kind = 2 (post-processing stage).
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm93"></a><a name="lmin"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm116"></a><a name="lmin"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">lmin</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -558,18 +562,18 @@ when lda_plus_u_kind = 2 (post-processing stage).
Minimum value of the orbital quantum number of the Hubbard
atoms starting from which (and up to the maximum l in the
system) Hubbard V will be written to the file parameters.out.
lmin refers to the orbital quantum number of the atom
<a href="#lmin">lmin</a> refers to the orbital quantum number of the atom
corresponding to the first site-index in Hubbard_V(:,:,:).
This keyword is used only when lda_plus_u_kind = 2 and only
in the post-processing stage. Example: lmin=1 corresponds to
in the post-processing stage. Example: <a href="#lmin">lmin</a>=1 corresponds to
writing to file V between e.g. oxygen (with p states) and its
neighbors, and including V between transition metals (with d
states) and their neighbors. Instead, when lmin=2 only the
states) and their neighbors. Instead, when <a href="#lmin">lmin</a>=2 only the
latter will be written to parameters.out.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm96"></a><a name="rmax"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm122"></a><a name="rmax"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">rmax</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
@ -592,7 +596,7 @@ are e.g. defects in the system.
</td></tr>
</table>
<small>
This file has been created by helpdoc utility on Fri Jul 17 10:28:25 CEST 2020.
This file has been created by helpdoc utility on Sun Nov 29 14:20:03 CET 2020.
</small>
</body>
</html>

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: hp.x / PWscf / Quantum Espresso (version: 6.6)
Program: hp.x / PWscf / Quantum Espresso (version: 6.7)
------------------------------------------------------------------------
@ -93,7 +93,8 @@ NAMELIST: &INPUTHP
See: find_atpert
Description: If .true. determines the number of perturbations
(i.e. which atoms will be perturbed) and exits smoothly
without performing any calculation.
without performing any calculation. For DFT+U+V, it also
determines the indices of inter-site couples.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
@ -123,49 +124,50 @@ NAMELIST: &INPUTHP
Default: 5.D-5
Description: Threshold for a comparison of unperturbed occupations
which is needed for the selection of atoms which must
be perturbed. Can be used only when find_atpert = 1.
be perturbed. Can be used only when "find_atpert" = 1.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: skip_type
Variable: skip_type(i), i=1,ntyp
Type: LOGICAL
Default: .false.
Default: skip_type(i) = .false.
See: equiv_type
Description: skip_type(i), where i runs over types of atoms.
If skip_type(i)=.true. then no linear-response
Description: "skip_type"(i), where i runs over types of atoms.
If "skip_type"(i)=.true. then no linear-response
calculation will be performed for the i-th atomic type:
in this case equiv_type(i) must be specified, otherwise
in this case "equiv_type"(i) must be specified, otherwise
the HP code will stop. This option is useful if the
system has atoms of the same type but opposite spin
pollarizations (anti-ferromagnetic case).
This keyword cannot be used when find_atpert = 1.
This keyword cannot be used when "find_atpert" = 1.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: equiv_type
Variable: equiv_type(i), i=1,ntyp
Type: INTEGER
Default: 0
Default: equiv_type(i) = 0
See: skip_type
Description: equiv_type(i), where i runs over types of atoms.
equiv_type(i)=j, will make type i equivalent to type j
Description: "equiv_type"(i), where i runs over types of atoms.
"equiv_type"(i)=j, will make type i equivalent to type j
(useful when nspin=2). Such a merging of types is done
only at the post-processing stage.
This keyword cannot be used when find_atpert = 1.
This keyword cannot be used when "find_atpert" = 1.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: perturb_only_atom
Variable: perturb_only_atom(i), i=1,ntyp
Type: LOGICAL
Default: .false.
Default: perturb_only_atom(i) = .false.
See: compute_hp
Description: If perturb_only_atom(i)=.true. then only the i-th
Description: If "perturb_only_atom"(i)=.true. then only the i-th
atom will be perturbed and considered in the run.
This variable is useful when one wants to split
the whole calculation on parts. Note: this variable
has a higher priority than skip_type.
the whole calculation on parts.
Note: this variable has a higher priority than "skip_type".
+--------------------------------------------------------------------
+--------------------------------------------------------------------
@ -174,8 +176,9 @@ NAMELIST: &INPUTHP
Type: INTEGER
Default: 1
See: last_q, sum_pertq
Description: Computes only the q points from start_q to last_q.
IMPORTANT: start_q must be smaller or equal to
Description: Computes only the q points from "start_q" to "last_q".
IMPORTANT: "start_q" must be smaller or equal to
the total number of q points found.
+--------------------------------------------------------------------
@ -185,8 +188,9 @@ NAMELIST: &INPUTHP
Type: INTEGER
Default: number of q points
See: start_q, sum_pertq
Description: Computes only the q points from start_q to last_q.
IMPORTANT: last_q must be smaller or equal to
Description: Computes only the q points from "start_q" to "last_q".
IMPORTANT: "last_q" must be smaller or equal to
the total number of q points found.
+--------------------------------------------------------------------
@ -199,7 +203,7 @@ NAMELIST: &INPUTHP
Description: If it is set to .true. then the HP code will collect
pieces of the response occupation matrices for all
q points. This variable should be used only when
start_q, last_q and perturb_only_atom are used.
"start_q", "last_q" and "perturb_only_atom" are used.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
@ -215,7 +219,7 @@ NAMELIST: &INPUTHP
tmp_dir/HP/prefix.chi.i.dat. Note that all files
prefix.chi.i.dat (where i runs over all perturbed
atoms) must be placed in one folder tmp_dir/HP/.
compute_hp=.true. must be used only when the
"compute_hp"=.true. must be used only when the
calculation was parallelized over perturbations.
+--------------------------------------------------------------------
@ -268,7 +272,7 @@ NAMELIST: &INPUTHP
Default: alpha_mix(1)=0.3
Description: Mixing parameter (for the i-th iteration) for updating
the response SCF potential using the modified Broyden
method: D.D. Johnson, PRB 38, 12807 (1988).
method. See: D.D. Johnson, PRB 38, 12807 (1988).
+--------------------------------------------------------------------
+--------------------------------------------------------------------
@ -277,7 +281,7 @@ NAMELIST: &INPUTHP
Type: INTEGER
Default: 4
Description: Number of iterations used in potential mixing
using the modified Broyden method
using the modified Broyden method. See:
D.D. Johnson, PRB 38, 12807 (1988).
+--------------------------------------------------------------------
@ -301,13 +305,13 @@ NAMELIST: &INPUTHP
Description: Minimum value of the orbital quantum number of the Hubbard
atoms starting from which (and up to the maximum l in the
system) Hubbard V will be written to the file parameters.out.
lmin refers to the orbital quantum number of the atom
"lmin" refers to the orbital quantum number of the atom
corresponding to the first site-index in Hubbard_V(:,:,:).
This keyword is used only when lda_plus_u_kind = 2 and only
in the post-processing stage. Example: lmin=1 corresponds to
in the post-processing stage. Example: "lmin"=1 corresponds to
writing to file V between e.g. oxygen (with p states) and its
neighbors, and including V between transition metals (with d
states) and their neighbors. Instead, when lmin=2 only the
states) and their neighbors. Instead, when "lmin"=2 only the
latter will be written to parameters.out.
+--------------------------------------------------------------------
@ -325,4 +329,4 @@ NAMELIST: &INPUTHP
===END OF NAMELIST======================================================
This file has been created by helpdoc utility on Fri Jul 17 10:28:25 CEST 2020
This file has been created by helpdoc utility on Sun Nov 29 14:20:03 CET 2020

View File

@ -89,7 +89,8 @@ calculations only for inequivalent q points.
<info>
If .true. determines the number of perturbations
(i.e. which atoms will be perturbed) and exits smoothly
without performing any calculation.
without performing any calculation. For DFT+U+V, it also
determines the indices of inter-site couples.
</info>
</var>
<var name="find_atpert" type="INTEGER" >
@ -117,59 +118,61 @@ Method for searching of atoms which must be perturbed.
<info>
Threshold for a comparison of unperturbed occupations
which is needed for the selection of atoms which must
be perturbed. Can be used only when find_atpert = 1.
be perturbed. Can be used only when <ref>find_atpert</ref> = 1.
</info>
</var>
<var name="skip_type" type="LOGICAL" >
<default> .false.
<dimension name="skip_type" start="1" end="ntyp" type="LOGICAL" >
<default> skip_type(i) = .false.
</default>
<see> equiv_type
</see>
<info>
skip_type(i), where i runs over types of atoms.
If skip_type(i)=.true. then no linear-response
<ref>skip_type</ref>(i), where i runs over types of atoms.
If <ref>skip_type</ref>(i)=.true. then no linear-response
calculation will be performed for the i-th atomic type:
in this case equiv_type(i) must be specified, otherwise
in this case <ref>equiv_type</ref>(i) must be specified, otherwise
the HP code will stop. This option is useful if the
system has atoms of the same type but opposite spin
pollarizations (anti-ferromagnetic case).
This keyword cannot be used when find_atpert = 1.
This keyword cannot be used when <ref>find_atpert</ref> = 1.
</info>
</var>
<var name="equiv_type" type="INTEGER" >
<default> 0
</dimension>
<dimension name="equiv_type" start="1" end="ntyp" type="INTEGER" >
<default> equiv_type(i) = 0
</default>
<see> skip_type
</see>
<info>
equiv_type(i), where i runs over types of atoms.
equiv_type(i)=j, will make type i equivalent to type j
<ref>equiv_type</ref>(i), where i runs over types of atoms.
<ref>equiv_type</ref>(i)=j, will make type i equivalent to type j
(useful when nspin=2). Such a merging of types is done
only at the post-processing stage.
This keyword cannot be used when find_atpert = 1.
This keyword cannot be used when <ref>find_atpert</ref> = 1.
</info>
</var>
<var name="perturb_only_atom" type="LOGICAL" >
<default> .false.
</dimension>
<dimension name="perturb_only_atom" start="1" end="ntyp" type="LOGICAL" >
<default> perturb_only_atom(i) = .false.
</default>
<see> compute_hp
</see>
<info>
If perturb_only_atom(i)=.true. then only the i-th
If <ref>perturb_only_atom</ref>(i)=.true. then only the i-th
atom will be perturbed and considered in the run.
This variable is useful when one wants to split
the whole calculation on parts. Note: this variable
has a higher priority than skip_type.
the whole calculation on parts.
<b>Note:</b> this variable has a higher priority than <ref>skip_type</ref>.
</info>
</var>
</dimension>
<var name="start_q" type="INTEGER" >
<default> 1
</default>
<see> last_q, sum_pertq
</see>
<info>
Computes only the q points from start_q to last_q.
IMPORTANT: start_q must be smaller or equal to
Computes only the q points from <ref>start_q</ref> to <ref>last_q</ref>.
<b>IMPORTANT:</b> <ref>start_q</ref> must be smaller or equal to
the total number of q points found.
</info>
</var>
@ -179,8 +182,9 @@ the total number of q points found.
<see> start_q, sum_pertq
</see>
<info>
Computes only the q points from start_q to last_q.
IMPORTANT: last_q must be smaller or equal to
Computes only the q points from <ref>start_q</ref> to <ref>last_q</ref>.
<b>IMPORTANT:</b> <ref>last_q</ref> must be smaller or equal to
the total number of q points found.
</info>
</var>
@ -193,7 +197,7 @@ the total number of q points found.
If it is set to .true. then the HP code will collect
pieces of the response occupation matrices for all
q points. This variable should be used only when
start_q, last_q and perturb_only_atom are used.
<ref>start_q</ref>, <ref>last_q</ref> and <ref>perturb_only_atom</ref> are used.
</info>
</var>
<var name="compute_hp" type="LOGICAL" >
@ -209,7 +213,7 @@ Hubbard parameters. The HP code will look for files
tmp_dir/HP/prefix.chi.i.dat. Note that all files
prefix.chi.i.dat (where i runs over all perturbed
atoms) must be placed in one folder tmp_dir/HP/.
compute_hp=.true. must be used only when the
<ref>compute_hp</ref>=.true. must be used only when the
calculation was parallelized over perturbations.
</info>
</var>
@ -257,7 +261,7 @@ solution of the linear-response Kohn-Sham equations.
<info>
Mixing parameter (for the i-th iteration) for updating
the response SCF potential using the modified Broyden
method: D.D. Johnson, <a href="https://journals.aps.org/prb/abstract/10.1103/PhysRevB.38.12807">PRB 38, 12807 (1988)</a>.
method. See: D.D. Johnson, <a href="https://journals.aps.org/prb/abstract/10.1103/PhysRevB.38.12807">PRB 38, 12807 (1988)</a>.
</info>
</var>
<var name="nmix" type="INTEGER" >
@ -265,7 +269,7 @@ method: D.D. Johnson, <a href="https://journals.aps.org/prb/abstract/10.1103/Phy
</default>
<info>
Number of iterations used in potential mixing
using the modified Broyden method
using the modified Broyden method. See:
D.D. Johnson, <a href="https://journals.aps.org/prb/abstract/10.1103/PhysRevB.38.12807">PRB 38, 12807 (1988)</a>.
</info>
</var>
@ -287,13 +291,13 @@ when lda_plus_u_kind = 2 (post-processing stage).
Minimum value of the orbital quantum number of the Hubbard
atoms starting from which (and up to the maximum l in the
system) Hubbard V will be written to the file parameters.out.
lmin refers to the orbital quantum number of the atom
<ref>lmin</ref> refers to the orbital quantum number of the atom
corresponding to the first site-index in Hubbard_V(:,:,:).
This keyword is used only when lda_plus_u_kind = 2 and only
in the post-processing stage. Example: lmin=1 corresponds to
in the post-processing stage. Example: <ref>lmin</ref>=1 corresponds to
writing to file V between e.g. oxygen (with p states) and its
neighbors, and including V between transition metals (with d
states) and their neighbors. Instead, when lmin=2 only the
states) and their neighbors. Instead, when <ref>lmin</ref>=2 only the
latter will be written to parameters.out.
</info>
</var>

View File

@ -1,4 +1,4 @@
VERSION = 6.7
VERSION := $(shell awk -F\' '/version_number/{print $$2}' ../../include/qe_version.h )
HELPDOC = ../../dev-tools/helpdoc -version $(VERSION)
doc: all

View File

@ -262,6 +262,12 @@ CONTAINS
IF ( .NOT. conv_bfgs .AND. ( tr_min_hit > 1 ) ) CALL infomsg( 'bfgs',&
'history already reset at previous step: stopping' )
conv_bfgs = conv_bfgs .OR. ( tr_min_hit > 1 )
!
WRITE(stdout, '(5X,"Energy error",T30,"= ",1PE12.1)') energy_error
WRITE(stdout, '(5X,"Gradient error",T30,"= ",1PE12.1)') grad_error
IF( lmovecell ) WRITE(stdout, &
'(5X,"Cell gradient error",T30,"= ",1PE12.1,/)') cell_error
!
IF ( conv_bfgs ) GOTO 1000
!
! ... some output is written
@ -275,10 +281,6 @@ CONTAINS
WRITE( UNIT = stdout, &
& FMT = '(5X,A," new",T30,"= ",F18.10," Ry",/)' ) fname,energy
!
WRITE(stdout, '(5X,"Gradient error",T30,"= ",1PE12.1)') grad_error
IF( lmovecell ) WRITE(stdout, &
'(5X,"Cell gradient error",T30,"= ",1PE12.1,/)') cell_error
!
! ... the bfgs algorithm starts here
!
IF ( .NOT. energy_wolfe_condition( energy ) .AND. (scf_iter > 1) ) THEN

View File

@ -1,4 +1,4 @@
VERSION = 6.7
VERSION := $(shell awk -F\' '/version_number/{print $$2}' ../../include/qe_version.h )
HELPDOC = ../../dev-tools/helpdoc -version $(VERSION)
LATEX = pdflatex
LATEX2HTML = latex2html

View File

@ -116,10 +116,12 @@ input_description -distribution {Quantum Espresso} -package PWscf -program ph.x
var fildrho -type CHARACTER {
default { ' ' }
info { File where the charge density responses are written. Note that the file
will actually be saved as ${outdir}/_ph0/${prefix}.${fildrho}1
where ${outdir}, ${prefix} and ${fildrho} are the values of the
corresponding input variables }
info {
File where the charge density responses are written. Note that the file
will actually be saved as @b {${outdir}/_ph0/${prefix}.${fildrho}1}
where @b ${outdir}, @b ${prefix} and @b ${fildrho} are the values of the
corresponding input variables
}
}
var fildvscf -type CHARACTER {
@ -138,8 +140,9 @@ input_description -distribution {Quantum Espresso} -package PWscf -program ph.x
macroscopic dielectric constant of the system is
computed. Do not set @ref epsil to .true. if you have a
metallic system or q/=0: the code will complain and stop.
Note: the input value of epsil will be ignored if ldisp=.true.
(the code will automatically set epsil to .false. for metals,
Note: the input value of @ref epsil will be ignored if @ref ldisp=.true.
(the code will automatically set @ref epsil to .false. for metals,
to .true. for insulators: see routine PHonon/PH/prepare_q.f90).
}
}
@ -792,11 +795,11 @@ is the number of the representation. These files contain the
contribution to the dynamical matrix of the irr representation for the
iq point.
If recover=.true. ph.x does not recalculate the
If @ref recover=.true. ph.x does not recalculate the
representations already saved in the tmp_dir/_ph0/{prefix}.phsave
directory. Moreover ph.x writes on the files patterns.#iq.xml in the
tmp_dir/_ph0/{prefix}.phsave directory the displacement patterns that it
is using. If recover=.true. ph.x does not recalculate the
is using. If @ref recover=.true. ph.x does not recalculate the
displacement patterns found in the tmp_dir/_ph0/{prefix}.phsave directory.
This mechanism allows:

View File

@ -46,7 +46,7 @@
<tr><th style="margin: 3 3 3 10; background: #005789; background: linear-gradient(rgba(0,87,137,1),rgba(0,119,189,1)); color: #ffffee; ">
<h1 style="margin: 10 10 10 15; text-align: left;"> Input File Description </h1>
<h2 style="margin: 10 10 10 15; text-align: left;"> Program:
ph.x / PWscf / Quantum Espresso<span style="font-weight: normal;"> (version: 6.6)</span>
ph.x / PWscf / Quantum Espresso<span style="font-weight: normal;"> (version: 6.7)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">
@ -59,17 +59,17 @@
<p><a href="#idm15">Line-of-input:</a> <a href="#idm16">title_line</a></p>
<p><a href="#idm18">&amp;INPUTPH</a></p>
<blockquote>
<a href="#idm19">amass</a> | <a href="#idm22">outdir</a> | <a href="#idm27">prefix</a> | <a href="#idm30">niter_ph</a> | <a href="#idm33">tr2_ph</a> | <a href="#idm36">alpha_mix(niter)</a> | <a href="#idm39">nmix_ph</a> | <a href="#idm42">verbosity</a> | <a href="#idm48">reduce_io</a> | <a href="#idm51">max_seconds</a> | <a href="#idm54">fildyn</a> | <a href="#idm57">fildrho</a> | <a href="#idm60">fildvscf</a> | <a href="#idm63">epsil</a> | <a href="#idm67">lrpa</a> | <a href="#idm70">lnoloc</a> | <a href="#idm73">trans</a> | <a href="#idm78">lraman</a> | <a href="#idm84">eth_rps</a> | <a href="#idm87">eth_ns</a> | <a href="#idm90">dek</a> | <a href="#idm93">recover</a> | <a href="#idm96">low_directory_check</a> | <a href="#idm99">only_init</a> | <a href="#idm102">qplot</a> | <a href="#idm105">q2d</a> | <a href="#idm108">q_in_band_form</a> | <a href="#idm111">electron_phonon</a> | <a href="#idm130">el_ph_nsigma</a> | <a href="#idm133">el_ph_sigma</a> | <a href="#idm139">ahc_dir</a> | <a href="#idm142">ahc_nbnd</a> | <a href="#idm145">ahc_nbndskip</a> | <a href="#idm153">skip_upperfan</a> | <a href="#idm156">lshift_q</a> | <a href="#idm159">zeu</a> | <a href="#idm165">zue</a> | <a href="#idm170">elop</a> | <a href="#idm173">fpol</a> | <a href="#idm177">ldisp</a> | <a href="#idm183">nogg</a> | <a href="#idm186">asr</a> | <a href="#idm189">ldiag</a> | <a href="#idm194">lqdir</a> | <a href="#idm199">search_sym</a> | <a href="#idm203">nq1</a> | <a href="#idm204">nq2</a> | <a href="#idm205">nq3</a> | <a href="#idm210">nk1</a> | <a href="#idm211">nk2</a> | <a href="#idm212">nk3</a> | <a href="#idm213">k1</a> | <a href="#idm214">k2</a> | <a href="#idm215">k3</a> | <a href="#idm218">diagonalization</a> | <a href="#idm224">read_dns_bare</a> | <a href="#idm227">ldvscf_interpolate</a> | <a href="#idm233">wpot_dir</a> | <a href="#idm236">do_long_range</a> | <a href="#idm239">do_charge_neutral</a> | <a href="#idm245">start_irr</a> | <a href="#idm255">last_irr</a> | <a href="#idm265">nat_todo</a> | <a href="#idm270">modenum</a> | <a href="#idm275">start_q</a> | <a href="#idm286">last_q</a> | <a href="#idm298">dvscf_star</a> | <a href="#idm306">drho_star</a>
<a href="#idm19">amass</a> | <a href="#idm22">outdir</a> | <a href="#idm27">prefix</a> | <a href="#idm30">niter_ph</a> | <a href="#idm33">tr2_ph</a> | <a href="#idm36">alpha_mix(niter)</a> | <a href="#idm39">nmix_ph</a> | <a href="#idm42">verbosity</a> | <a href="#idm48">reduce_io</a> | <a href="#idm51">max_seconds</a> | <a href="#idm54">fildyn</a> | <a href="#idm57">fildrho</a> | <a href="#idm64">fildvscf</a> | <a href="#idm67">epsil</a> | <a href="#idm74">lrpa</a> | <a href="#idm77">lnoloc</a> | <a href="#idm80">trans</a> | <a href="#idm85">lraman</a> | <a href="#idm91">eth_rps</a> | <a href="#idm94">eth_ns</a> | <a href="#idm97">dek</a> | <a href="#idm100">recover</a> | <a href="#idm103">low_directory_check</a> | <a href="#idm106">only_init</a> | <a href="#idm109">qplot</a> | <a href="#idm112">q2d</a> | <a href="#idm115">q_in_band_form</a> | <a href="#idm118">electron_phonon</a> | <a href="#idm137">el_ph_nsigma</a> | <a href="#idm140">el_ph_sigma</a> | <a href="#idm146">ahc_dir</a> | <a href="#idm149">ahc_nbnd</a> | <a href="#idm152">ahc_nbndskip</a> | <a href="#idm160">skip_upperfan</a> | <a href="#idm163">lshift_q</a> | <a href="#idm166">zeu</a> | <a href="#idm172">zue</a> | <a href="#idm177">elop</a> | <a href="#idm180">fpol</a> | <a href="#idm184">ldisp</a> | <a href="#idm190">nogg</a> | <a href="#idm193">asr</a> | <a href="#idm196">ldiag</a> | <a href="#idm201">lqdir</a> | <a href="#idm206">search_sym</a> | <a href="#idm210">nq1</a> | <a href="#idm211">nq2</a> | <a href="#idm212">nq3</a> | <a href="#idm217">nk1</a> | <a href="#idm218">nk2</a> | <a href="#idm219">nk3</a> | <a href="#idm220">k1</a> | <a href="#idm221">k2</a> | <a href="#idm222">k3</a> | <a href="#idm225">diagonalization</a> | <a href="#idm231">read_dns_bare</a> | <a href="#idm234">ldvscf_interpolate</a> | <a href="#idm240">wpot_dir</a> | <a href="#idm243">do_long_range</a> | <a href="#idm246">do_charge_neutral</a> | <a href="#idm252">start_irr</a> | <a href="#idm262">last_irr</a> | <a href="#idm272">nat_todo</a> | <a href="#idm277">modenum</a> | <a href="#idm282">start_q</a> | <a href="#idm293">last_q</a> | <a href="#idm305">dvscf_star</a> | <a href="#idm313">drho_star</a>
</blockquote>
<p><a href="#idm318">Line-of-input:</a> <a href="#idm319"> xq(1) xq(2) xq(3)
<p><a href="#idm325">Line-of-input:</a> <a href="#idm326"> xq(1) xq(2) xq(3)
</a></p>
<p><a href="#idm327">qPointsSpecs</a></p>
<p><a href="#idm334">qPointsSpecs</a></p>
<blockquote>
<a href="#idm330">nqs</a> | <a href="#idm338">xq1</a> | <a href="#idm339">xq2</a> | <a href="#idm340">xq3</a> | <a href="#idm341">nq</a>
<a href="#idm337">nqs</a> | <a href="#idm345">xq1</a> | <a href="#idm346">xq2</a> | <a href="#idm347">xq3</a> | <a href="#idm348">nq</a>
</blockquote>
<p><a href="#idm345">Line-of-input:</a> <a href="#idm346"> atom(1) atom(2) ... atom(nat_todo)
<p><a href="#idm352">Line-of-input:</a> <a href="#idm353"> atom(1) atom(2) ... atom(nat_todo)
</a></p>
<p><a href="#idm350"> ADDITIONAL INFORMATION </a></p>
<p><a href="#idm357"> ADDITIONAL INFORMATION </a></p>
</blockquote>
</blockquote>
<blockquote>
@ -320,13 +320,13 @@ vnew(in) = alpha_mix*vold(out) + (1-alpha_mix)*vold(in)
</tr>
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
File where the charge density responses are written. Note that the file
will actually be saved as ${outdir}/_ph0/${prefix}.${fildrho}1
where ${outdir}, ${prefix} and ${fildrho} are the values of the
corresponding input variables
will actually be saved as <b>${outdir}/_ph0/${prefix}.${fildrho}1</b>
where <b>${outdir},</b> <b>${prefix}</b> and <b>${fildrho}</b> are the values of the
corresponding input variables
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm60"></a><a name="fildvscf"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm64"></a><a name="fildvscf"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">fildvscf</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">CHARACTER</td>
@ -342,7 +342,7 @@ File where the the potential variation is written
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm63"></a><a name="epsil"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm67"></a><a name="epsil"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">epsil</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -357,13 +357,14 @@ If .true. in a q=0 calculation for a non metal the
macroscopic dielectric constant of the system is
computed. Do not set <a href="#epsil">epsil</a> to .true. if you have a
metallic system or q/=0: the code will complain and stop.
Note: the input value of epsil will be ignored if ldisp=.true.
(the code will automatically set epsil to .false. for metals,
Note: the input value of <a href="#epsil">epsil</a> will be ignored if <a href="#ldisp">ldisp</a>=.true.
(the code will automatically set <a href="#epsil">epsil</a> to .false. for metals,
to .true. for insulators: see routine PHonon/PH/prepare_q.f90).
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm67"></a><a name="lrpa"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm74"></a><a name="lrpa"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">lrpa</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -379,7 +380,7 @@ RPA level with DV_xc=0.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm70"></a><a name="lnoloc"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm77"></a><a name="lnoloc"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">lnoloc</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -395,7 +396,7 @@ local fields, i.e. by setting DV_H=0 and DV_xc=0.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm73"></a><a name="trans"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm80"></a><a name="trans"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">trans</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -412,7 +413,7 @@ calculated.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm78"></a><a name="lraman"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm85"></a><a name="lraman"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">lraman</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -432,7 +433,7 @@ M. Lazzeri and F. Mauri, <a href="https://journals.aps.org/prl/abstract/10.1103/
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30"><tr><td>
<p><b> Optional variables for Raman:
</b></p>
<a name="idm84"></a><a name="eth_rps"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm91"></a><a name="eth_rps"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">eth_rps</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
@ -446,7 +447,7 @@ M. Lazzeri and F. Mauri, <a href="https://journals.aps.org/prl/abstract/10.1103/
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm87"></a><a name="eth_ns"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm94"></a><a name="eth_ns"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">eth_ns</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
@ -460,7 +461,7 @@ M. Lazzeri and F. Mauri, <a href="https://journals.aps.org/prl/abstract/10.1103/
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm90"></a><a name="dek"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm97"></a><a name="dek"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">dek</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
@ -475,7 +476,7 @@ M. Lazzeri and F. Mauri, <a href="https://journals.aps.org/prl/abstract/10.1103/
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
</td></tr></table>
<a name="idm93"></a><a name="recover"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm100"></a><a name="recover"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">recover</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -489,7 +490,7 @@ M. Lazzeri and F. Mauri, <a href="https://journals.aps.org/prl/abstract/10.1103/
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm96"></a><a name="low_directory_check"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm103"></a><a name="low_directory_check"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">low_directory_check</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -505,7 +506,7 @@ If .true. search in the phsave directory only the
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm99"></a><a name="only_init"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm106"></a><a name="only_init"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">only_init</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -521,7 +522,7 @@ If .true. only the bands and other initialization quantities are calculated.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm102"></a><a name="qplot"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm109"></a><a name="qplot"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">qplot</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -535,7 +536,7 @@ If .true. only the bands and other initialization quantities are calculated.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm105"></a><a name="q2d"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm112"></a><a name="q2d"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">q2d</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -554,7 +555,7 @@ and three are the number of points in the two directions.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm108"></a><a name="q_in_band_form"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm115"></a><a name="q_in_band_form"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">q_in_band_form</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -574,7 +575,7 @@ input is calculated. The weights are not used.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm111"></a><a name="electron_phonon"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm118"></a><a name="electron_phonon"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">electron_phonon</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">CHARACTER</td>
@ -654,7 +655,7 @@ the use of a different (larger) k-point grid.
</blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm130"></a><a name="el_ph_nsigma"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm137"></a><a name="el_ph_nsigma"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">el_ph_nsigma</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -670,7 +671,7 @@ electron-phonon coupling calculation.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm133"></a><a name="el_ph_sigma"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm140"></a><a name="el_ph_sigma"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">el_ph_sigma</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
@ -689,7 +690,7 @@ an electron-phonon coupling calculation.
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30"><tr><td>
<p><b> Variables for <a href="#electron_phonon">electron_phonon</a> = 'ahc':
</b></p>
<a name="idm139"></a><a name="ahc_dir"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm146"></a><a name="ahc_dir"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">ahc_dir</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">CHARACTER</td>
@ -704,7 +705,7 @@ Directory where the output binary files are written.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm142"></a><a name="ahc_nbnd"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm149"></a><a name="ahc_nbnd"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">ahc_nbnd</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -719,7 +720,7 @@ Number of bands for which the electron self-energy is to be computed.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm145"></a><a name="ahc_nbndskip"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm152"></a><a name="ahc_nbndskip"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">ahc_nbndskip</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -737,7 +738,7 @@ exceed nbnd of the preceding SCF or NSCF calculation.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm153"></a><a name="skip_upperfan"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm160"></a><a name="skip_upperfan"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">skip_upperfan</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -754,7 +755,7 @@ involves solving the Sternheimer equation.
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
</td></tr></table>
<a name="idm156"></a><a name="lshift_q"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm163"></a><a name="lshift_q"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">lshift_q</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -771,7 +772,7 @@ When this option is set, the q2r.x code cannot be used.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm159"></a><a name="zeu"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm166"></a><a name="zeu"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">zeu</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -789,7 +790,7 @@ and <a href="#zeu">zeu</a>=.false. only the dielectric tensor is calculated.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm165"></a><a name="zue"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm172"></a><a name="zue"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">zue</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -808,7 +809,7 @@ The results should be the same within numerical noise.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm170"></a><a name="elop"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm177"></a><a name="elop"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">elop</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -823,7 +824,7 @@ If .true. calculate electro-optic tensor.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm173"></a><a name="fpol"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm180"></a><a name="fpol"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">fpol</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -840,7 +841,7 @@ see example09 for calculation of methane ).
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm177"></a><a name="ldisp"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm184"></a><a name="ldisp"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">ldisp</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -857,7 +858,7 @@ calculation of the entire phonon dispersion.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm183"></a><a name="nogg"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm190"></a><a name="nogg"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">nogg</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -877,7 +878,7 @@ minimum, as it is done in code phcg.x.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm186"></a><a name="asr"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm193"></a><a name="asr"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">asr</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -893,7 +894,7 @@ Works only in conjunction with "gamma_gamma" tricks (see above)
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm189"></a><a name="ldiag"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm196"></a><a name="ldiag"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">ldiag</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -914,7 +915,7 @@ correct. The others are zero or wrong. Use with care.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm194"></a><a name="lqdir"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm201"></a><a name="lqdir"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">lqdir</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -933,7 +934,7 @@ separately for each q inside the subdirectories.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm199"></a><a name="search_sym"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm206"></a><a name="search_sym"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">search_sym</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -952,7 +953,7 @@ symmetry analysis.
<table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="white-space: nowrap; background: #ffff99; padding: 2 2 2 10; ">
<a name="idm203"></a><a name="nq1"></a>nq1, <a name="idm204"></a><a name="nq2"></a>nq2, <a name="idm205"></a><a name="nq3"></a>nq3</th>
<a name="idm210"></a><a name="nq1"></a>nq1, <a name="idm211"></a><a name="nq2"></a>nq2, <a name="idm212"></a><a name="nq3"></a>nq3</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
</tr>
<tr>
@ -970,7 +971,7 @@ in the input of pw.x.
<table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="white-space: nowrap; background: #ffff99; padding: 2 2 2 10; ">
<a name="idm210"></a><a name="nk1"></a>nk1, <a name="idm211"></a><a name="nk2"></a>nk2, <a name="idm212"></a><a name="nk3"></a>nk3, <a name="idm213"></a><a name="k1"></a>k1, <a name="idm214"></a><a name="k2"></a>k2, <a name="idm215"></a><a name="k3"></a>k3</th>
<a name="idm217"></a><a name="nk1"></a>nk1, <a name="idm218"></a><a name="nk2"></a>nk2, <a name="idm219"></a><a name="nk3"></a>nk3, <a name="idm220"></a><a name="k1"></a>k1, <a name="idm221"></a><a name="k2"></a>k2, <a name="idm222"></a><a name="k3"></a>k3</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
</tr>
<tr>
@ -988,7 +989,7 @@ with offset determined by k1,k2,k3.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm218"></a><a name="diagonalization"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm225"></a><a name="diagonalization"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">diagonalization</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">CHARACTER</td>
@ -1020,7 +1021,7 @@ Slower than 'david' but uses less memory and is
</blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm224"></a><a name="read_dns_bare"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm231"></a><a name="read_dns_bare"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">read_dns_bare</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -1043,7 +1044,7 @@ read (e.g. for restart) in order to save time.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm227"></a><a name="ldvscf_interpolate"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm234"></a><a name="ldvscf_interpolate"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">ldvscf_interpolate</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -1064,7 +1065,7 @@ Requires <a href="#trans">trans</a> = .false..
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30"><tr><td>
<p><b> Optional variables for dvscf interpolation:
</b></p>
<a name="idm233"></a><a name="wpot_dir"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm240"></a><a name="wpot_dir"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">wpot_dir</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">CHARACTER</td>
@ -1082,7 +1083,7 @@ with names ${prefix}.wpot.irc${irc}//"1".
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm236"></a><a name="do_long_range"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm243"></a><a name="do_long_range"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">do_long_range</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -1103,7 +1104,7 @@ The quadrupole part is not implemented.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm239"></a><a name="do_charge_neutral"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm246"></a><a name="do_charge_neutral"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">do_charge_neutral</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
@ -1123,7 +1124,7 @@ charges. Used only if <a href="#do_long_range">do_long_range</a> = .true..
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30"><tr><td>
<p><b> Specification of irreducible representation
</b></p>
<a name="idm245"></a><a name="start_irr"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm252"></a><a name="start_irr"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">start_irr</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -1148,7 +1149,7 @@ IMPORTANT:
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm255"></a><a name="last_irr"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm262"></a><a name="last_irr"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">last_irr</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -1173,7 +1174,7 @@ IMPORTANT:
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm265"></a><a name="nat_todo"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm272"></a><a name="nat_todo"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">nat_todo</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -1198,7 +1199,7 @@ IMPORTANT:
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm270"></a><a name="modenum"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm277"></a><a name="modenum"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">modenum</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -1224,7 +1225,7 @@ a column of the dynamical matrix.
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30"><tr><td>
<p><b> q-point specification
</b></p>
<a name="idm275"></a><a name="start_q"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm282"></a><a name="start_q"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">start_q</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -1249,7 +1250,7 @@ IMPORTANT:
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm286"></a><a name="last_q"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm293"></a><a name="last_q"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">last_q</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -1274,7 +1275,7 @@ IMPORTANT
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm298"></a><a name="dvscf_star"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm305"></a><a name="dvscf_star"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">dvscf_star</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">STRUCTURE</td>
@ -1319,7 +1320,7 @@ Note2: this feature is currently untested with image parallelisation.
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<a name="idm306"></a><a name="drho_star"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm313"></a><a name="drho_star"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">drho_star</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">STRUCTURE</td>
@ -1356,7 +1357,7 @@ Notice that the defaults are different.
</table>
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; width: 100%; padding: 5 5 0 5"><tr><td>
<b>IF </b><tt><em>ldisp != .true. and qplot != .true.</em> :</tt><blockquote><table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30"><tr><td>
<a name="idm318"></a><table border="0" width="100%" style="margin-bottom: 20; ">
<a name="idm325"></a><table border="0" width="100%" style="margin-bottom: 20; ">
<tr><th bgcolor="#ddcba6"><h3 style="margin: 10 10 10 15; text-align: left;">
Line of input
</h3></th></tr>
@ -1364,13 +1365,13 @@ Notice that the defaults are different.
<tr><td>
<h3>Syntax:</h3>
<blockquote>
<i><a href="#idm319"> xq(1) xq(2) xq(3)
<i><a href="#idm326"> xq(1) xq(2) xq(3)
</a></i>  </blockquote>
</td></tr>
<tr><td>
<h3>Description of items:</h3>
<blockquote>
<a name="idm319"></a><a name="xq_list"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm326"></a><a name="xq_list"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th width="20%" style="white-space: nowrap; text-align: left; vertical-align: top; background: #ffff99; padding: 2 2 2 10; "> xq(1) xq(2) xq(3)
</th>
@ -1391,32 +1392,32 @@ Not used if <a href="#ldisp">ldisp</a>=.true. or <a href="#qplot">qplot</a>=.tru
<b>ELSEIF </b><tt><em>qplot == .true.</em> :</tt><blockquote><table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30"><tr><td>
<p><b> Specification of q points when <a href="#qplot">qplot</a> == .true.
</b></p>
<a name="idm327"></a><a name="qPointsSpecs"></a><table border="0" style="margin-bottom: 20; table-layout: auto; width: 100%;">
<a name="idm334"></a><a name="qPointsSpecs"></a><table border="0" style="margin-bottom: 20; table-layout: auto; width: 100%;">
<tr><th bgcolor="#ddcba6"><h2 style="margin: 10 10 10 15; text-align: left; white-space: nowrap;">
Card: <span class="card">qPointsSpecs</span> </h2></th></tr>
<tr><td style="text-align: left; background: #ffebc6; padding: 5 5 5 30; "><table style="border-color: #505087; border-style: solid; border-width: 0; margin-bottom: 10; table-layout: auto; width: 100%;"><tbody>
<tr><td>
<h3>Syntax:</h3>
<blockquote><div class="syntax">
<i><a href="#idm330">nqs</a></i>  <br><a name="idm333"></a><table>
<i><a href="#idm337">nqs</a></i>  <br><a name="idm340"></a><table>
<tr>
<td style="white-space:nowrap"> <i><a href="#idm338">xq1(1)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm339">xq2(1)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm340">xq3(1)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm341">nq(1)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm345">xq1(1)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm346">xq2(1)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm347">xq3(1)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm348">nq(1)</a></i> </td>
</tr>
<tr>
<td style="white-space:nowrap"> <i><a href="#idm338">xq1(2)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm339">xq2(2)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm340">xq3(2)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm341">nq(2)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm345">xq1(2)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm346">xq2(2)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm347">xq3(2)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm348">nq(2)</a></i> </td>
</tr>
<tr><td colspan="2"> . . .</td></tr>
<tr>
<td style="white-space:nowrap"> <i><a href="#idm338">xq1(nqs)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm339">xq2(nqs)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm340">xq3(nqs)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm341">nq(nqs)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm345">xq1(nqs)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm346">xq2(nqs)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm347">xq3(nqs)</a></i> </td>
<td style="white-space:nowrap"> <i><a href="#idm348">nq(nqs)</a></i> </td>
</tr>
</table>
</div></blockquote>
@ -1424,7 +1425,7 @@ Not used if <a href="#ldisp">ldisp</a>=.true. or <a href="#qplot">qplot</a>=.tru
<tr><td>
<h3>Description of items:</h3>
<blockquote>
<a name="idm330"></a><a name="nqs"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm337"></a><a name="nqs"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">nqs</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
@ -1437,7 +1438,7 @@ Number of q points in the list. Used only if <a href="#qplot">qplot</a>=.true.
<table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th width="20%" align="left" valign="top" style="background: #ffff99; padding: 2 2 2 10; ">
<a name="xq1"><a name="idm338">xq1</a></a>, <a name="xq2"><a name="idm339">xq2</a></a>, <a name="xq3"><a name="idm340">xq3</a></a>
<a name="xq1"><a name="idm345">xq1</a></a>, <a name="xq2"><a name="idm346">xq2</a></a>, <a name="xq3"><a name="idm347">xq3</a></a>
</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
</tr>
@ -1451,7 +1452,7 @@ flags q2d and q_in_band_form. (NB: nq is integer)
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
<table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; "><a name="nq"><a name="idm341">nq</a></a></th>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; "><a name="nq"><a name="idm348">nq</a></a></th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
</tr>
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
@ -1468,7 +1469,7 @@ on the flags q2d and q_in_band_form.
</td></tr></table>
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; width: 100%; padding: 5 5 0 5"><tr><td>
<b>IF </b><tt><em>nat_todo was specified</em> :</tt><blockquote><table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30"><tr><td>
<a name="idm345"></a><table border="0" width="100%" style="margin-bottom: 20; ">
<a name="idm352"></a><table border="0" width="100%" style="margin-bottom: 20; ">
<tr><th bgcolor="#ddcba6"><h3 style="margin: 10 10 10 15; text-align: left;">
Line of input
</h3></th></tr>
@ -1476,13 +1477,13 @@ on the flags q2d and q_in_band_form.
<tr><td>
<h3>Syntax:</h3>
<blockquote>
<i><a href="#idm346"> atom(1) atom(2) ... atom(nat_todo)
<i><a href="#idm353"> atom(1) atom(2) ... atom(nat_todo)
</a></i>  </blockquote>
</td></tr>
<tr><td>
<h3>Description of items:</h3>
<blockquote>
<a name="idm346"></a><a name="nat_todo_list"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<a name="idm353"></a><a name="nat_todo_list"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th width="20%" style="white-space: nowrap; text-align: left; vertical-align: top; background: #ffff99; padding: 2 2 2 10; "> atom(1) atom(2) ... atom(nat_todo)
</th>
@ -1501,7 +1502,7 @@ calculation if <a href="#nat_todo">nat_todo</a> is specified.
</td></tr></table></blockquote>
</td></tr></table>
<blockquote>
<a name="idm350"><h3> ADDITIONAL INFORMATION </h3></a>
<a name="idm357"><h3> ADDITIONAL INFORMATION </h3></a>
<blockquote><pre>
NB: The program ph.x writes on the tmp_dir/_ph0/{prefix}.phsave directory
a file for each representation of each q point. This file is called
@ -1510,11 +1511,11 @@ is the number of the representation. These files contain the
contribution to the dynamical matrix of the irr representation for the
iq point.
If recover=.true. ph.x does not recalculate the
If <a href="#recover">recover</a>=.true. ph.x does not recalculate the
representations already saved in the tmp_dir/_ph0/{prefix}.phsave
directory. Moreover ph.x writes on the files patterns.#iq.xml in the
tmp_dir/_ph0/{prefix}.phsave directory the displacement patterns that it
is using. If recover=.true. ph.x does not recalculate the
is using. If <a href="#recover">recover</a>=.true. ph.x does not recalculate the
displacement patterns found in the tmp_dir/_ph0/{prefix}.phsave directory.
This mechanism allows:
@ -1559,7 +1560,7 @@ information.
</td></tr>
</table>
<small>
This file has been created by helpdoc utility on Mon Nov 23 08:30:06 UTC 2020.
This file has been created by helpdoc utility on Sun Nov 29 12:16:13 CET 2020.
</small>
</body>
</html>

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: ph.x / PWscf / Quantum Espresso (version: 6.6)
Program: ph.x / PWscf / Quantum Espresso (version: 6.7)
------------------------------------------------------------------------
@ -160,9 +160,9 @@ NAMELIST: &INPUTPH
Type: CHARACTER
Default: ' '
Description: File where the charge density responses are written. Note that the file
will actually be saved as ${outdir}/_ph0/${prefix}.${fildrho}1
where ${outdir}, ${prefix} and ${fildrho} are the values of the
corresponding input variables
will actually be saved as ${outdir}/_ph0/${prefix}.${fildrho}1
where ${outdir}, ${prefix} and ${fildrho} are the values of the
corresponding input variables
+--------------------------------------------------------------------
+--------------------------------------------------------------------
@ -183,8 +183,9 @@ NAMELIST: &INPUTPH
macroscopic dielectric constant of the system is
computed. Do not set "epsil" to .true. if you have a
metallic system or q/=0: the code will complain and stop.
Note: the input value of epsil will be ignored if ldisp=.true.
(the code will automatically set epsil to .false. for metals,
Note: the input value of "epsil" will be ignored if "ldisp"=.true.
(the code will automatically set "epsil" to .false. for metals,
to .true. for insulators: see routine PHonon/PH/prepare_q.f90).
+--------------------------------------------------------------------
@ -932,11 +933,11 @@ ________________________________________________________________________
contribution to the dynamical matrix of the irr representation for the
iq point.
If recover=.true. ph.x does not recalculate the
If "recover"=.true. ph.x does not recalculate the
representations already saved in the tmp_dir/_ph0/{prefix}.phsave
directory. Moreover ph.x writes on the files patterns.#iq.xml in the
tmp_dir/_ph0/{prefix}.phsave directory the displacement patterns that it
is using. If recover=.true. ph.x does not recalculate the
is using. If "recover"=.true. ph.x does not recalculate the
displacement patterns found in the tmp_dir/_ph0/{prefix}.phsave directory.
This mechanism allows:
@ -978,4 +979,4 @@ ________________________________________________________________________
information.
This file has been created by helpdoc utility on Mon Nov 23 08:30:06 UTC 2020
This file has been created by helpdoc utility on Sun Nov 29 12:16:13 CET 2020

View File

@ -1,4 +1,4 @@
VERSION = 6.7
VERSION := $(shell awk -F\' '/version_number/{print $$2}' ../../include/qe_version.h )
HELPDOC = ../../dev-tools/helpdoc -version $(VERSION)
LATEX = pdflatex

View File

@ -1,4 +1,4 @@
VERSION = 6.7
VERSION := $(shell awk -F\' '/version_number/{print $$2}' ../../include/qe_version.h )
HELPDOC = ../../dev-tools/helpdoc -version $(VERSION)
LATEX = pdflatex
LATEX2HTML = latex2html

View File

@ -741,16 +741,18 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
In order to perform LSDA calculations for an antiferromagnetic
state, define two different atomic species corresponding to
sublattices of the same atomic type.
NOTE 1: starting_magnetization is ignored in most BUT NOT ALL
@b {NOTE 1:} @ref starting_magnetization is ignored in most BUT NOT ALL
cases in non-scf calculations: it is safe to keep the same
values for the scf and subsequent non-scf calculation.
NOTE 2: If you fix the magnetization with
@ref tot_magnetization, do not specify starting_magnetization.
NOTE 3: In the noncollinear/spin-orbit case, starting with zero
@b {NOTE 2:} If you fix the magnetization with
@ref tot_magnetization, do not specify @ref starting_magnetization.
@b {NOTE 3:} In the noncollinear/spin-orbit case, starting with zero
starting_magnetization on all atoms imposes time reversal
symmetry. The magnetization is never calculated and is
set to zero (the internal variable domag is set to .FALSE.).
}
}
@ -1180,8 +1182,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
is not configured there.
}
info {
Specify @ref lda_plus_u = .TRUE. to enable DFT+U, DFT+U+V, or
DFT+U+J calculations.
Specify @ref lda_plus_u = .TRUE. to enable @b DFT+U, @b DFT+U+V, or @b DFT+U+J calculations.
See: Anisimov, Zaanen, and Andersen, PRB 44, 943 (1991);
Anisimov et al., PRB 48, 16929 (1993);
Liechtenstein, Anisimov, and Zaanen, PRB 52, R5467 (1994).
@ -1193,17 +1194,24 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
}
var lda_plus_u_kind -type INTEGER {
default { 0 }
info {
Specifies the type of calculation:
options {
info { Specifies the type of calculation: }
0 DFT+U simplified version of Cococcioni and de Gironcoli,
PRB 71, 035105 (2005), using @ref Hubbard_U
1 DFT+U rotationally invariant scheme of Liechtenstein et al.,
using @ref Hubbard_U and @ref Hubbard_J
2 DFT+U+V simplified version of Campo Jr and Cococcioni,
J. Phys.: Condens. Matter 22, 055602 (2010), using @ref Hubbard_V
opt -val 0 {
DFT+U simplified version of Cococcioni and de Gironcoli,
PRB 71, 035105 (2005), using @ref Hubbard_U
}
opt -val 1 {
DFT+U rotationally invariant scheme of Liechtenstein et al.,
using @ref Hubbard_U and @ref Hubbard_J
}
opt -val 2 {
DFT+U+V simplified version of Campo Jr and Cococcioni,
J. Phys.: Condens. Matter 22, 055602 (2010), doi:10.1088/0953-8984/22/5/055602,
using @ref Hubbard_V
}
}
}
dimension Hubbard_U -start 1 -end ntyp -type REAL {
@ -1227,15 +1235,19 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
The atomic indices na and nb correspond to the atomic positions
in the @ref ATOMIC_POSITIONS card (this is not the same as Hubbard_U
which is specified for @ref ATOMIC_SPECIES).
Wnen na=nb, then Hubbard_V(na,na,k) is the on-site Hubbard_U
When na=nb, then @ref Hubbard_V(na,na,k) is the on-site @ref Hubbard_U
for the atom na.
natx=50 (if needed it can be changed in /Modules/parameters.f90)
The index k controls the "interaction type" (k=1 is used for the
simplest DFT+U+V calculation):
k=1 - interaction between standard orbitals (both on na and nb);
k=2 - interaction between standard (on na) and background (on nb) orbitals;
k=3 - interaction between background orbitals (both on na and nb);
k=4 - interaction between background (on na) and standard (on nb) orbitals.
@b k=1 - interaction between standard orbitals (both on na and nb);
@b k=2 - interaction between standard (on na) and background (on nb) orbitals;
@b k=3 - interaction between background orbitals (both on na and nb);
@b k=4 - interaction between background (on na) and standard (on nb) orbitals.
Standard orbitals correspond to the main Hubbard channel (e.g. d electrons
in transition metals) and background orbitals correspond to the secondary
Hubbard channel (e.g. p electrons in transition metals).
@ -1248,6 +1260,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
used to compute U (and V) with the linear-response method of
Cococcioni and de Gironcoli, PRB 71, 035105 (2005)
(only for @ref lda_plus_u_kind=0 and 2).
Note: Hubbard U and V can be computed using the HP code
which is based on density-functional perturbation theory,
and it gives exactly the same result as the method of
@ -1269,10 +1282,12 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
info {
Hubbard_J(i,ityp): J parameters (eV) for species ityp,
used in DFT+U calculations (only for @ref lda_plus_u_kind=1)
For p orbitals: J = Hubbard_J(1,ityp);
For d orbitals: J = Hubbard_J(1,ityp), B = Hubbard_J(2,ityp);
For f orbitals: J = Hubbard_J(1,ityp), E2 = Hubbard_J(2,ityp),
E3= Hubbard_J(3,ityp).
If B or E2 or E3 are not specified or set to 0 they will be
calculated from J using atomic ratios.
}
@ -1361,7 +1376,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
var ensemble_energies -type LOGICAL {
default { .false. }
info {
If ensemble_energies = .true., an ensemble of xc energies
If @ref ensemble_energies = .true., an ensemble of xc energies
is calculated non-selfconsistently for perturbed
exchange-enhancement factors and LDA vs. PBE correlation
ratios after each converged electronic ground state
@ -1371,7 +1386,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
included with libbeef.
Requires linking against libbeef.
input_dft must be set to a BEEF-type functional
@ref input_dft must be set to a BEEF-type functional
(e.g. input_dft = 'BEEF-vdW')
}
}
@ -1524,9 +1539,9 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
default { -1 }
info {
determines when atomic magnetic moments are printed on output:
report = 0 never
report =-1 at the beginning of the scf and at convergence
report = N: as -1, plus every N scf iterations
@b {report = 0} never
@b {report =-1} at the beginning of the scf and at convergence
@b {report = N} as -1, plus every N scf iterations
}
}
@ -1874,7 +1889,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
default { .FALSE. }
info {
Used only for monoclinic lattices. If .TRUE. the b
unique ibrav (-12 or -13) are used, and symmetry
unique @ref ibrav (-12 or -13) are used, and symmetry
equivalent positions are chosen assuming that the
twofold axis or the mirror normal is parallel to the
b axis. If .FALSE. it is parallel to the c axis.
@ -1885,8 +1900,8 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
default { 1 }
info {
Used only for space groups that in the ITA allow
the use of two different origins. origin_choice=1,
means the first origin, while origin_choice=2 is the
the use of two different origins. @ref origin_choice=1,
means the first origin, while @ref origin_choice=2 is the
second origin.
}
}

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: pw.x / PWscf / Quantum Espresso (version: 6.6)
Program: pw.x / PWscf / Quantum Espresso (version: 6.7)
------------------------------------------------------------------------
@ -321,7 +321,9 @@ NAMELIST: &CONTROL
save charge to disk at each SCF step,
keep wavefunctions on disk (in "distributed" format),
save mixing data as well.
Do not use this option unless you have a good reason to
Do not use this option unless you have a good reason!
It is no longer needed to specify 'high' in order to be able
to restart from an interrupted calculation (see "restart_mode")
'medium' :
save charge to disk at each SCF step,
@ -343,10 +345,7 @@ NAMELIST: &CONTROL
do not save anything to disk
Default is 'low' for the scf case, 'medium' otherwise.
Note that the needed RAM increases as disk I/O decreases!
It is no longer needed to specify 'high' in order to be able
to restart from an interrupted calculation (see "restart_mode")
but you cannot restart in "disk_io"=='nowf' or 'none'
Note that the needed RAM increases as disk I/O decreases
+--------------------------------------------------------------------
+--------------------------------------------------------------------
@ -749,11 +748,14 @@ NAMELIST: &SYSTEM
In order to perform LSDA calculations for an antiferromagnetic
state, define two different atomic species corresponding to
sublattices of the same atomic type.
NOTE 1: starting_magnetization is ignored in most BUT NOT ALL
NOTE 1: "starting_magnetization" is ignored in most BUT NOT ALL
cases in non-scf calculations: it is safe to keep the same
values for the scf and subsequent non-scf calculation.
NOTE 2: If you fix the magnetization with
"tot_magnetization", do not specify starting_magnetization.
"tot_magnetization", do not specify "starting_magnetization".
NOTE 3: In the noncollinear/spin-orbit case, starting with zero
starting_magnetization on all atoms imposes time reversal
symmetry. The magnetization is never calculated and is
@ -1215,8 +1217,7 @@ NAMELIST: &SYSTEM
a few selected elements. Modify Modules/set_hubbard_l.f90 and
PW/src/tabd.f90 if you plan to use DFT+U with an element that
is not configured there.
Description: Specify "lda_plus_u" = .TRUE. to enable DFT+U, DFT+U+V, or
DFT+U+J calculations.
Description: Specify "lda_plus_u" = .TRUE. to enable DFT+U, DFT+U+V, or DFT+U+J calculations.
See: Anisimov, Zaanen, and Andersen, PRB 44, 943 (1991);
Anisimov et al., PRB 48, 16929 (1993);
Liechtenstein, Anisimov, and Zaanen, PRB 52, R5467 (1994).
@ -1231,16 +1232,21 @@ NAMELIST: &SYSTEM
Type: INTEGER
Default: 0
Description: Specifies the type of calculation:
0 DFT+U simplified version of Cococcioni and de Gironcoli,
PRB 71, 035105 (2005), using "Hubbard_U"
1 DFT+U rotationally invariant scheme of Liechtenstein et al.,
using "Hubbard_U" and "Hubbard_J"
2 DFT+U+V simplified version of Campo Jr and Cococcioni,
J. Phys.: Condens. Matter 22, 055602 (2010), using "Hubbard_V"
Description:
Specifies the type of calculation:
0 :
DFT+U simplified version of Cococcioni and de Gironcoli,
PRB 71, 035105 (2005), using "Hubbard_U"
1 :
DFT+U rotationally invariant scheme of Liechtenstein et al.,
using "Hubbard_U" and "Hubbard_J"
2 :
DFT+U+V simplified version of Campo Jr and Cococcioni,
J. Phys.: Condens. Matter 22, 055602 (2010), doi:10.1088/0953-8984/22/5/055602,
using "Hubbard_V"
+--------------------------------------------------------------------
+--------------------------------------------------------------------
@ -1270,15 +1276,19 @@ NAMELIST: &SYSTEM
The atomic indices na and nb correspond to the atomic positions
in the "ATOMIC_POSITIONS" card (this is not the same as Hubbard_U
which is specified for "ATOMIC_SPECIES").
Wnen na=nb, then Hubbard_V(na,na,k) is the on-site Hubbard_U
When na=nb, then "Hubbard_V"(na,na,k) is the on-site "Hubbard_U"
for the atom na.
natx=50 (if needed it can be changed in /Modules/parameters.f90)
The index k controls the "interaction type" (k=1 is used for the
simplest DFT+U+V calculation):
k=1 - interaction between standard orbitals (both on na and nb);
k=2 - interaction between standard (on na) and background (on nb) orbitals;
k=3 - interaction between background orbitlas (both on na and nb);
k=3 - interaction between background orbitals (both on na and nb);
k=4 - interaction between background (on na) and standard (on nb) orbitals.
Standard orbitals correspond to the main Hubbard channel (e.g. d electrons
in transition metals) and background orbitals correspond to the secondary
Hubbard channel (e.g. p electrons in transition metals).
@ -1293,6 +1303,7 @@ NAMELIST: &SYSTEM
used to compute U (and V) with the linear-response method of
Cococcioni and de Gironcoli, PRB 71, 035105 (2005)
(only for "lda_plus_u_kind"=0 and 2).
Note: Hubbard U and V can be computed using the HP code
which is based on density-functional perturbation theory,
and it gives exactly the same result as the method of
@ -1318,10 +1329,12 @@ NAMELIST: &SYSTEM
Default: 0.D0 for all species
Description: Hubbard_J(i,ityp): J parameters (eV) for species ityp,
used in DFT+U calculations (only for "lda_plus_u_kind"=1)
For p orbitals: J = Hubbard_J(1,ityp);
For d orbitals: J = Hubbard_J(1,ityp), B = Hubbard_J(2,ityp);
For f orbitals: J = Hubbard_J(1,ityp), E2 = Hubbard_J(2,ityp),
E3= Hubbard_J(3,ityp).
If B or E2 or E3 are not specified or set to 0 they will be
calculated from J using atomic ratios.
+--------------------------------------------------------------------
@ -1410,7 +1423,7 @@ NAMELIST: &SYSTEM
Type: LOGICAL
Default: .false.
Description: If ensemble_energies = .true., an ensemble of xc energies
Description: If "ensemble_energies" = .true., an ensemble of xc energies
is calculated non-selfconsistently for perturbed
exchange-enhancement factors and LDA vs. PBE correlation
ratios after each converged electronic ground state
@ -1420,7 +1433,7 @@ NAMELIST: &SYSTEM
included with libbeef.
Requires linking against libbeef.
input_dft must be set to a BEEF-type functional
"input_dft" must be set to a BEEF-type functional
(e.g. input_dft = 'BEEF-vdW')
+--------------------------------------------------------------------
@ -1581,7 +1594,7 @@ NAMELIST: &SYSTEM
Description: determines when atomic magnetic moments are printed on output:
report = 0 never
report =-1 at the beginning of the scf and at convergence
report = N: as -1, plus every N scf iterations
report = N as -1, plus every N scf iterations
+--------------------------------------------------------------------
+--------------------------------------------------------------------
@ -1947,7 +1960,7 @@ NAMELIST: &SYSTEM
Type: LOGICAL
Default: .FALSE.
Description: Used only for monoclinic lattices. If .TRUE. the b
unique ibrav (-12 or -13) are used, and symmetry
unique "ibrav" (-12 or -13) are used, and symmetry
equivalent positions are chosen assuming that the
twofold axis or the mirror normal is parallel to the
b axis. If .FALSE. it is parallel to the c axis.
@ -1959,8 +1972,8 @@ NAMELIST: &SYSTEM
Type: INTEGER
Default: 1
Description: Used only for space groups that in the ITA allow
the use of two different origins. origin_choice=1,
means the first origin, while origin_choice=2 is the
the use of two different origins. "origin_choice"=1,
means the first origin, while "origin_choice"=2 is the
second origin.
+--------------------------------------------------------------------
@ -3536,4 +3549,4 @@ CARD: ATOMIC_FORCES
===END OF CARD==========================================================
This file has been created by helpdoc utility on Tue Sep 29 12:44:54 CEST 2020
This file has been created by helpdoc utility on Sat Nov 28 21:53:08 CET 2020

View File

@ -1,4 +1,4 @@
VERSION = 6.7
VERSION := $(shell awk -F\' '/version_number/{print $$2}' ../../include/qe_version.h )
HELPDOC = ../../dev-tools/helpdoc -version $(VERSION)
LATEX = pdflatex
LATEX2HTML = latex2html

View File

@ -53,7 +53,6 @@ SUBROUTINE summary()
USE fcp_variables, ONLY : lfcpopt, lfcpdyn
USE fcp, ONLY : fcp_summary
USE relax, ONLY : epse, epsf, epsp
USE force_mod, ONLY : lforce
!
IMPLICIT NONE
!
@ -96,7 +95,7 @@ SUBROUTINE summary()
WRITE( stdout, 103) nbnd, ecutwfc, ecutrho
IF ( dft_is_hybrid () ) WRITE( stdout, 104) ecutfock
IF ( lscf) WRITE( stdout, 105) tr2, mixing_beta, nmix, mixing_style
IF ( lforce ) WRITE (stdout, 106) epse, epsf
IF ( lmd .OR. lbfgs ) WRITE (stdout, 106) epse, epsf
IF ( lmovecell ) WRITE (stdout, 107) epsp
!
100 FORMAT( /,/,5X, &

View File

@ -1,4 +1,4 @@
VERSION = 6.7
VERSION := $(shell awk -F\' '/version_number/{print $$2}' ../../include/qe_version.h )
HELPDOC = ../../dev-tools/helpdoc -version $(VERSION)
doc: all

View File

@ -1,4 +1,4 @@
VERSION = 6.7
VERSION := $(shell awk -F\' '/version_number/{print $$2}' ../../include/qe_version.h )
HELPDOC = ../../dev-tools/helpdoc -version $(VERSION)
HTMLS = INPUT_Lanczos.html \

View File

@ -181,7 +181,7 @@ input_description -distribution {Quantum Espresso} -program ld1.x {
1 ... spin-polarized calculation
@b BEWARE:
not allowed if iswitch=3 (PP generation) or with full
not allowed if @ref iswitch=3 (PP generation) or with full
relativistic calculation
}
default { 0 }
@ -268,7 +268,7 @@ input_description -distribution {Quantum Espresso} -program ld1.x {
info {
@b 'low' or @b 'high'
if @b 'high' with iswitch=2,3 prints separately core and
if @b 'high' with @ref iswitch=2,3 prints separately core and
valence contributions to the energies. Print the
frozen-core energy.
}
@ -425,12 +425,12 @@ input_description -distribution {Quantum Espresso} -program ld1.x {
var pseudotype -type INTEGER {
info {
1 ... norm-conserving, single-projector PP
IMPORTANT: if pseudotype=1 all calculations are done
@b IMPORTANT: if pseudotype=1 all calculations are done
using the SEMILOCAL form, not the separable nonlocal form
2 ... norm-conserving PP in separable form (obsolescent)
All calculations are done using SEPARABLE non-local form
IMPORTANT: multiple projectors allowed but not properly
@b IMPORTANT: multiple projectors allowed but not properly
implemented, use only if you know what you are doing
3 ... ultrasoft PP or PAW
@ -746,15 +746,15 @@ input_description -distribution {Quantum Espresso} -program ld1.x {
}
namelist TEST {
label { needed only if iswitch=2 or iswitch=4, optional if iswitch=3 }
label { needed only if @ref iswitch=2 or @ref iswitch=4, optional if @ref iswitch=3 }
var nconf -type INTEGER {
info { the number of configurations to be tested. For iswitch = 4 nconf=2 }
info { the number of configurations to be tested. For @ref iswitch=4 nconf=2 }
default { 1 }
}
var file_pseudo -type CHARACTER {
status { ignored if iswitch=3 }
status { ignored if @ref iswitch=3 }
info {
File containing the PP.
@ -766,7 +766,7 @@ input_description -distribution {Quantum Espresso} -program ld1.x {
* otherwise, the old NC format is read.
IMPORTANT: in the latter case, all calculations are done
@b IMPORTANT: in the latter case, all calculations are done
using the SEMILOCAL form, not the separable nonlocal form.
Use the UPF format if you want to test the separable form!
}
@ -800,9 +800,9 @@ input_description -distribution {Quantum Espresso} -program ld1.x {
dimension configts -start 1 -end nconf -type CHARACTER {
info {
A string array containing the test electronic configuration.
configts(nc), nc=1,nconf, has the same syntax as for "config"
@ref configts(nc), nc=1,@ref nconf, has the same syntax as for @ref config
but only VALENCE states must be included.
If configts(i) is not set, the electron configuration
If @ref configts(i) is not set, the electron configuration
is read from the cards following the namelist.
}
}
@ -829,8 +829,10 @@ input_description -distribution {Quantum Espresso} -program ld1.x {
}
var rcutv -type REAL {
info { Cutoff distance (CUT) for the inclusion of LDA-1/2 potential.
Needed (mandatory) only if iswitch = 4 }
info {
Cutoff distance (CUT) for the inclusion of LDA-1/2 potential.
Needed (mandatory) only if @ref iswitch = 4
}
default { -1.0 }
}

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: ld1.x / / Quantum Espresso (version: 6.6)
Program: ld1.x / / Quantum Espresso (version: 6.7)
------------------------------------------------------------------------
@ -217,7 +217,7 @@ NAMELIST: &INPUT
1 ... spin-polarized calculation
BEWARE:
not allowed if iswitch=3 (PP generation) or with full
not allowed if "iswitch"=3 (PP generation) or with full
relativistic calculation
Default: 0
+--------------------------------------------------------------------
@ -306,7 +306,7 @@ NAMELIST: &INPUT
Default: 'low'
Description: 'low' or 'high'
if 'high' with iswitch=2,3 prints separately core and
if 'high' with "iswitch"=2,3 prints separately core and
valence contributions to the energies. Print the
frozen-core energy.
+--------------------------------------------------------------------
@ -928,13 +928,13 @@ CARD:
========================================================================
NAMELIST: &TEST
NEEDED ONLY IF ISWITCH=2 OR ISWITCH=4, OPTIONAL IF ISWITCH=3
NEEDED ONLY IF "ISWITCH"=2 OR "ISWITCH"=4, OPTIONAL IF "ISWITCH"=3
+--------------------------------------------------------------------
Variable: nconf
Type: INTEGER
Description: the number of configurations to be tested. For iswitch = 4 nconf=2
Description: the number of configurations to be tested. For "iswitch"=4 nconf=2
Default: 1
+--------------------------------------------------------------------
@ -942,7 +942,7 @@ NAMELIST: &TEST
Variable: file_pseudo
Type: CHARACTER
Status: ignored if iswitch=3
Status: ignored if "iswitch"=3
Description: File containing the PP.
* If the file name contains ".upf" or ".UPF",
@ -987,9 +987,9 @@ NAMELIST: &TEST
Type: CHARACTER
Description: A string array containing the test electronic configuration.
configts(nc), nc=1,nconf, has the same syntax as for "config"
"configts"(nc), nc=1,"nconf", has the same syntax as for "config"
but only VALENCE states must be included.
If configts(i) is not set, the electron configuration
If "configts"(i) is not set, the electron configuration
is read from the cards following the namelist.
+--------------------------------------------------------------------
@ -1021,7 +1021,7 @@ NAMELIST: &TEST
Type: REAL
Description: Cutoff distance (CUT) for the inclusion of LDA-1/2 potential.
Needed (mandatory) only if iswitch = 4
Needed (mandatory) only if "iswitch" = 4
Default: -1.0
+--------------------------------------------------------------------
@ -1266,4 +1266,4 @@ CARD:
This file has been created by helpdoc utility on Mon Nov 23 08:30:07 UTC 2020
This file has been created by helpdoc utility on Sun Nov 29 12:43:43 CET 2020

View File

@ -1,4 +1,4 @@
VERSION = 6.7
VERSION := $(shell awk -F\' '/version_number/{print $$2}' ../../include/qe_version.h )
HELPDOC = ../../dev-tools/helpdoc -version $(VERSION)
LATEX = pdflatex
LATEX2HTML = latex2html

View File

@ -25,6 +25,9 @@ dos: makedoc
atomic: makedoc
./check_gui atomic
hp: makedoc
./check_gui hp
makedoc:
(cd ..; $(MAKE) doc)

View File

@ -4,7 +4,7 @@ exec tclsh "$0" "$@"
#
# Usage: check_gui module
# ( module = pw, ph, pp, projwfc, atomic, or d3 )
# ( module = pw, neb, ph, pp, projwfc, bands, dos, atomic )
#
# Purpose: check the PWgui modules wrt corresponding INPUT_*.def
# files and create a PWgui help files.

View File

@ -4,7 +4,7 @@ exec tclsh "$0" "$@"
#
# Usage: diff_gui_help module
# ( module = pw, ph, pp, neb, projwfc, bands, dos, atomic, or d3 )
# ( module = pw, ph, pp, neb, projwfc, bands, dos, or atomic )
#
# Requirements: execute the check_gui first !!!
#

View File

@ -157,20 +157,14 @@ proc ::helpdoc::checkGui_makeHelpFile {deffile modulefile} {
::tclu::ERROR "can't find useable xsltproc, gui help file creation skipped"
}
# help file will be written to $helpfile
set helpfile [file tail [file rootname $modulefile]]-help.tcl
set orig_helpfile [file rootname $modulefile]-help.tcl
if { "$helpfile" == "$orig_helpfile" } {
puts stderr [::tclu::labelMsg WARNING "file \"$orig_helpfile\" exists.\nMaking a $orig_helpfile.bak backup copy."]
file copy -force $orig_helpfile $orig_helpfile.bak
}
# open/create a temporaty xml file ...
set orig_xmlfile [file rootname $deffile].xml
if { ! [file exists $orig_xmlfile] } {
::tclu::ERROR "file $orig_xmlfile does not exists, remake the documentation first!
Gui help file creation skipped."
}
set xml_prefix [file tail [file rootname $deffile]]
if { "$xml_prefix.xml" == "$orig_xmlfile" } {
@ -181,6 +175,16 @@ proc ::helpdoc::checkGui_makeHelpFile {deffile modulefile} {
}
set xml_fid [open $xml_temp w]
# help file will be written to $helpfile
set helpfile [file tail [file rootname $modulefile]]-help.tcl
set orig_helpfile [file rootname $modulefile]-help.tcl
if { "$helpfile" == "$orig_helpfile" } {
puts stderr [::tclu::labelMsg WARNING "file \"$orig_helpfile\" exists.\nMaking a $orig_helpfile.bak backup copy."]
file copy -force $orig_helpfile $orig_helpfile.bak
}
# copy $orig_xmlfile to $xml_temp, but replace the stylesheet input_xx.xsl by guihelp.xsl

View File

@ -16,7 +16,7 @@ proc ::helpdoc::core_modules {} {
bands PP/Doc INPUT_BANDS
dos PP/Doc INPUT_DOS
atomic atomic/Doc INPUT_LD1
d3 PHonon/Doc INPUT_D3
hp HP/Doc INPUT_HP
}
}

View File

@ -4,7 +4,7 @@ exec tclsh "$0" "$@"
#
# Usage: update_gui_help module
# ( module = pw, ph, pp, neb, projwfc, dos, bands, atomic, or d3 )
# ( module = pw, ph, pp, neb, projwfc, dos, bands, or atomic )
#
# Requirements: execute the check_gui first !!!
#

View File

@ -1,5 +1,8 @@
#!/bin/bash
# This script allows to compile FoX with PGI v.19.10 Community Edition
# on Windows 10 - configure works in general but fails for FoX
set -x
rm -rf FoX

View File

@ -107,8 +107,10 @@ libcuda_devxlib :
--disable-parallel \
--enable-cuda-env-check=no; \
make all
touch ../install/libcuda_devxlib # do not download and configure again
libcuda_devxlib_clean:
rm libcuda_devxlib
cd ../external/devxlib; \
if test -f make.inc; then ($(MAKE) clean); fi
libcuda_devxlib_veryclean: