Merge develop' into Master for qe-7.3.1

This commit is contained in:
Pietro Delugas 2024-02-29 10:31:46 +01:00
commit 348fb2fc70
326 changed files with 110288 additions and 111455 deletions

View File

@ -2,9 +2,10 @@ include: '.gitlab-ci.yml'
build:pw:
tags: [docker]
image: ubuntu:18.04
image: ubuntu:20.04
script:
- apt-get -qq update
- DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata
- apt-get -qq install m4 make wget curl git gfortran gcc libopenblas-dev libfftw3-dev libopenmpi-dev
- ./configure
- make pw
@ -16,9 +17,10 @@ build:pw:
build:cp:
tags: [docker]
image: ubuntu:18.04
image: ubuntu:20.04
script:
- apt-get -qq update
- DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata
- apt-get -qq install m4 make wget curl git gfortran gcc libopenblas-dev libfftw3-dev libopenmpi-dev
- ./configure
- make cp

View File

@ -29,3 +29,4 @@ build:pgi:
- make pw cp ph

View File

@ -13,7 +13,7 @@ cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
set(CMAKE_POLICY_DEFAULT_CMP0048 NEW)
project(qe
VERSION 7.3
VERSION 7.3.1
DESCRIPTION "ESPRESSO: opEn-Source Package for Research in Electronic Structure, Simulation, and Optimization"
LANGUAGES Fortran C)
@ -158,10 +158,6 @@ option(QE_ENABLE_OSCDFT "enable OS-CDFT 10.1021/acs.jctc.9b00281" OFF)
# least in C, not sure about Fortran), change all feature
# macros to avoid weird behaviors
# Disable all configuration headers used to be generated
# by configure (see <qe>/include/)
qe_add_global_compile_definitions(QE_NO_CONFIG_H)
if(QE_ENABLE_CUDA)
qe_add_global_compile_definitions(__CUDA)
endif()

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:
cp.x / CP / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3)</span>
cp.x / CP / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: cp.x / CP / Quantum ESPRESSO (version: 7.3)
Program: cp.x / CP / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------

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:
cppp.x / CP / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3)</span>
cppp.x / CP / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: cppp.x / CP / Quantum ESPRESSO (version: 7.3)
Program: cppp.x / CP / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------

View File

@ -1,5 +1,5 @@
\begin{center}
\def\version{7.3}
\def\version{7.3.1}
\def\qeImage{../../Doc/quantum_espresso}

View File

@ -393,7 +393,7 @@
! local variables
!
INTEGER :: iv, jv, ia, is, iss1, iss2, ir, ig, inl, jnl
INTEGER :: igno, igrp, ierr, ii
INTEGER :: igno, igrp, ierr, ii, cmax
INTEGER :: idx, ioff
REAL(DP) :: fi, fip, dd, dv
REAL(DP) :: tmp1, tmp2
@ -408,6 +408,7 @@
REAL(DP), ALLOCATABLE, DEVICE :: exx_a(:), exx_b(:)
REAL(DP), ALLOCATABLE, DEVICE :: exx_potential_d(:,:)
INTEGER, DEVICE, POINTER :: nl_d(:), nlm_d(:)
COMPLEX(DP), ALLOCATABLE :: psi_h(:), c_h(:,:)
!
CALL start_clock( 'dforce' )
!
@ -510,7 +511,50 @@
ENDDO
!
! ... provisional (mgga contribution done on CPU)
IF (xclib_dft_is('meta')) THEN
df = df_d
da = da_d
ALLOCATE( psi_h(dffts%nnr*many_fft), c_h(size(c,1),2*many_fft) )
psi_h = psi
cmax = MIN(i+2*many_fft-1,size(c,2))
c_h(:,1:cmax-i+1) = c(:,i:cmax)
!
igno = 0
ioff = 0
DO idx = 1, 2*many_fft, 2
ii = i+idx-1
IF( ii > n ) EXIT
! HK/MCA : reset occupation numbers since omp private screws it up... need a better fix FIXME
IF (tens) THEN
fi = -0.5d0
fip = -0.5d0
ELSE
fi = -0.5d0*f(ii)
fip = -0.5d0*f(ii+1)
ENDIF
!
IF( ii < n ) THEN
iss1=ispin( ii )
iss2=ispin( ii + 1 )
ELSE IF( ii == n ) THEN
iss1=ispin( ii )
iss2=iss1
ENDIF
CALL dforce_meta( c_h(1,idx),c_h(1,idx+1),df(igno+1:igno+ngw), &
da(igno+1:igno+ngw),psi_h(ioff+1:ioff+dffts%nnr), &
iss1,iss2,fi,fip )
igno = igno + ngw
ioff = ioff + dffts%nnr
ENDDO
!
df_d = df
da_d = da
!
DEALLOCATE( psi_h, c_h )
!
END IF
IF( nhsa > 0 ) THEN
!

View File

@ -1,5 +1,5 @@
!
! Copyright (C) 2002-2005 FPMD-CPV groups
! Copyright (C) 2002-2024 Quantum ESPRESSO Foundation
! This file is distributed under the terms of the
! GNU General Public License. See the file `License'
! in the root directory of the present distribution,
@ -9,7 +9,6 @@
SUBROUTINE from_scratch( )
!
USE kinds, ONLY : DP
USE atomic_wfc_init, ONLY : atomic_wfc_cp
USE control_flags, ONLY : tranp, trane, iverbosity, tpre, tv0rd, &
tfor, thdyn, &
lwf, tprnfor, tortho, amprp, ampre, &
@ -23,7 +22,7 @@ SUBROUTINE from_scratch( )
USE ions_nose, ONLY : xnhp0, xnhpm, vnhp, tempw
USE cell_base, ONLY : ainv, h, s_to_r, ibrav, omega, press, &
hold, r_to_s, deth, wmass, iforceh, &
cell_force, velh, at, alat, tpiba
cell_force, velh, at, alat
USE cell_nose, ONLY : xnhh0, xnhhm, vnhh
USE electrons_nose, ONLY : xnhe0, xnhem, vnhe
use electrons_base, ONLY : nbsp, f, nspin, nupdwn, iupdwn, nbsp_bgrp, nbspx_bgrp, nbspx, nudx
@ -49,7 +48,6 @@ SUBROUTINE from_scratch( )
USE cp_interfaces, ONLY : nlfq_bgrp
USE printout_base, ONLY : printout_pos
USE orthogonalize_base, ONLY : updatc, calphi_bgrp
USE upf_ions, ONLY : n_atom_wfc
USE wave_base, ONLY : wave_steepest
USE wavefunctions, ONLY : c0_bgrp, cm_bgrp, c0_d, phi, cm_d
USE fft_base, ONLY : dfftp, dffts
@ -63,7 +61,6 @@ SUBROUTINE from_scratch( )
USE mp, ONLY : mp_sum, mp_barrier
USE matrix_inversion
USE device_memcpy_m, ONLY : dev_memcpy
USE uspp_param, ONLY : upf, nwfcm
#if defined (__ENVIRON)
USE plugin_flags, ONLY : use_environ
@ -90,7 +87,7 @@ SUBROUTINE from_scratch( )
INTEGER :: n_spin_start
LOGICAL :: tfirst = .TRUE.
REAL(DP) :: stress(3,3)
INTEGER :: i1, i2, natomwfc
INTEGER :: i1, i2
!
! ... Subroutine body
!
@ -147,13 +144,12 @@ SUBROUTINE from_scratch( )
IF ( ionode ) &
WRITE( stdout, fmt = '(//,3X, "Wave Initialization: random initial wave-functions" )' )
! if asked, use as much atomic wavefunctions as possible
! if asked, use as many atomic wavefunctions as possible
if ( trim(startingwfc) == 'atomic') then
if ( ionode ) &
WRITE (stdout, '("Using also atomic wavefunctions as much as possible")')
natomwfc = n_atom_wfc ( nat, ityp )
call atomic_wfc_cp(cm_bgrp, omega, tpiba, nat, nsp, ityp, tau0, natomwfc, &
mill, eigts1, eigts2, eigts3, g, iupdwn, ngw, upf, nwfcm, nspin )
CALL atomic_wfc_cp(omega, nat, nsp, ityp, tau0, iupdwn, nspin, &
ngw, nbspx, cm_bgrp )
endif
@ -403,3 +399,65 @@ subroutine hangup
call mp_barrier(world_comm)
CALL stop_cp_run()
end subroutine
SUBROUTINE atomic_wfc_cp(omega, nat, nsp, ityp, tau, iupdwn, npol, npw, nbspx,&
evc )
USE kinds, ONLY : DP
USE uspp_param, ONLY : nwfcm
USE mp_global, ONLY : intra_bgrp_comm
USE uspp_data, ONLY : nqx, tab_at, dq
USE gvecw, ONLY : ecutwfc
USE upf_ions, ONLY : n_atom_wfc
IMPLICIT NONE
!
INTEGER, INTENT(IN) :: nat, nsp, ityp(nat), iupdwn(2), npol, npw, nbspx
REAL(DP), INTENT(IN) :: omega, tau(3,nat)
COMPLEX(DP), INTENT(inout) :: evc (npw,nbspx)
!
INTEGER :: natomwfc
COMPLEX(DP), ALLOCATABLE :: wfcatom(:,:,:)
!! Superposition of atomic wavefunctions
!cp specific settings (gamma only)
! xk is 0,0,0, igk is the identical permutation
! wfcatom has 2 dimensions (npw, nbnd*nspin)
! looks like only nspin=1,2 are implemented. The layout of the wfc is different:
! in cp it is the equivalent of (npw, nbnd, nspin ), while in pw is (npwx, nspin, nbnd)
real(dp) :: xk(3)
integer :: igk(npw), i, ipol, sh(2)
REAL(DP) :: angle1(nsp), angle2(nsp)
!! dummy, unused variables
! identity permutation
do i=1,npw
igk(i)=i
enddo
! gamma point only
xk=0.d0
nqx = INT( (SQRT(ecutwfc) / dq + 4) * 1.d0 )
allocate(tab_at(nqx,nwfcm,nsp))
call init_tab_atwfc(omega, intra_bgrp_comm)
natomwfc = n_atom_wfc ( nat, ityp )
allocate ( wfcatom(npw, npol, natomwfc) )
! only nospin / LSDA in CP
call atomic_wfc_acc( xk, npw, igk, nat, nsp, ityp, tau, &
.false., .false., angle1, angle2, .false., &
npw, npol, natomwfc, wfcatom )
sh = shape(evc)
!write the result in the correct order in evc
do i=1,min(natomwfc,sh(2)/npol)
do ipol = 1, npol
evc(:,i + iupdwn(ipol)-1) = wfcatom(:,ipol,i)
enddo
enddo
deallocate (wfcatom)
deallocate (tab_at)
end subroutine atomic_wfc_cp

View File

@ -258,6 +258,11 @@
CALL allocate_spline( vps_sp(is), mmx, xgmin, xgmax )
CALL allocate_spline( dvps_sp(is), mmx, xgmin, xgmax )
if ( upf(is)%tcoulombp .and. .not.allocated(upf(is)%vloc) ) then
! ugly workaround for 1/r potentials
allocate(upf(is)%vloc(rgrid(is)%mesh))
upf(is)%vloc(:) = - 2.0_dp* zv(is) / rgrid(is)%r(:)
end if
call formfn( rgrid(is)%r, rgrid(is)%rab, &
upf(is)%vloc(1:rgrid(is)%mesh), zv(is), rcmax(is), &
xgtab, 1.0d0, tpiba2, rgrid(is)%mesh, mmx, &

View File

@ -1,6 +1,6 @@
\documentclass[12pt,a4paper]{article}
\def\version{7.3}
\def\version{7.3.1}
\def\qe{{\sc Quantum ESPRESSO}}
%\usepackage{html}

View File

@ -1,5 +1,5 @@
\documentclass[12pt,a4paper]{article}
\def\version{7.3}
\def\version{7.3.1}
\def\qe{{\sc Quantum ESPRESSO}}
\textwidth = 17cm
\textheight = 24cm

View File

@ -1,3 +1,24 @@
New in 7.3.1 version:
* Various improvements and bug fixes for pw2wannier.f90 (Junfeng Qiao)
Fixed in 7.3.1 version:
* In CPV the mgga contribution to the force was missing on the GPU side.
Now it has been added (CPU and GPU runs match).
* f channel of GTH pseudopotentials fixed again (see issue #86 on gitlab)
Thanks to Chang Liu for reporting.
* Distributed parallel diagonalization (option -nd N with N=4,9,16,25,...)
crashed when used together with NVidia GPUs (thanks to Laura Bellentani)
* Old PPs with zero nonlocal part were crashing in parallel execution
(see issue #633 on gitlab). Affects v.7.3. Thanks to Ye Luo for reporting
* assume_isolated='2D' was giving wrong results when used with Gamma tricks
(see issue #11 on gitlab). Affects all previous versions.
* assume_isolated='esm' was giving bad forces when used with Gamma tricks.
Affects v.7.2 and 7.3. Thanks to Giuseppe Mattioli for reporting.
* Bad atomic symbols in some files used for plotting data (see issue #645
on gitlab). Affects v.7.3. Thanks to Francesco Filippone for reporting.
* Since v.6.2, assume_isolated='mt' was yielding bad phonon frequencies
(see issue #657). Thanks to Jeremy Rabone for reporting.
New in 7.3 version:
* Experimental support for pseudopotentials in PSML format
* Noncollinear implementation of DFT+U and DFT+U+V in the
@ -12,7 +33,7 @@ Incompatible changes in 7.3 version:
* Small changes in options "iprint" and "disk_io" of PWscf
* More pseudopotential-related code restructured and moved to upflib/
Fixed in 7.3 version:
Fixed in 7.3 version:
* Incorrect PP_SEMILOCAL field written for old-style pseudopotentials.
May cause crashes (but not bad numbers). Reported by Jibiao Li.
* Wrong output from Libxc-based gga-exchange functionals (gga_x) due to

View File

@ -1,5 +1,5 @@
\documentclass[12pt,a4paper]{article}
\def\version{7.3}
\def\version{7.3.1}
\def\qe{{\sc Quantum ESPRESSO}}
\usepackage{html}
@ -490,8 +490,6 @@ path, as specified in the PATH environment variable.
\texttt{make.inc} & compilation rules and flags (used by \texttt{Makefile})\\
\texttt{install/configure.msg} & a report of the configuration run (not needed for compilation)\\
\texttt{install/config.log} & detailed log of the configuration run (useful for debugging)\\
\texttt{include/qe\_cdefs.h} & (previously: \texttt{include/c\_defs.h})
a few definitions used by C files\\
\texttt{include/configure.h} & optional: info on compilation flags
(to enable it, uncomment \\ &
\verb|#define __HAVE_CONFIG_INFO|

View File

@ -69,6 +69,7 @@ target_link_libraries(
qe_mpi_fortran
qe_upflib
qe_fftx
qe_elpa
qe_xclib)
###########################################################

View File

@ -11,7 +11,7 @@
PROGRAM epw
!-----------------------------------------------------------------------
!! author: Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
!! version: v5.8
!! version: v5.8.1
!! license: GNU
!! summary: EPW main driver
!!
@ -42,7 +42,7 @@
LOGICAL,EXTERNAL :: check_gpu_support
!! Name of the program
!
version_number = '5.8'
version_number = '5.8.1'
!
CALL init_clocks(.TRUE.)
!

View File

@ -2026,7 +2026,7 @@
USE modes, ONLY : nmodes
USE epwcom, ONLY : nbndsub, fsthick, ngaussw, degaussw, shortrange, &
nkf1, nkf2, nkf3, nqf1, nqf2, nqf3, efermi_read, &
fermi_energy
fermi_energy, mp_mesh_k
USE pwcom, ONLY : ef
USE elph2, ONLY : etf, ibndmin, ibndmax, nkqf, epf17, wkf, nkf, &
nqtotf, wf, xqf, nkqtotf, efnew, nbndfst, nktotf, &
@ -2329,7 +2329,16 @@
! nkq - index of k+sign*q on the full fine k-mesh.
!
CALL kpmq_map(xk, xq, +1, nkq)
ikqfs = ixkf(bztoibz(nkq))
!
IF (mp_mesh_k) THEN
!
ikqfs = ixkf(bztoibz(nkq))
!
ELSE
! full k-point grid
ikqfs = ixkf(nkq)
!
ENDIF
!
IF (ikqfs > 0) THEN
DO imode = 1, nmodes ! phonon modes

View File

@ -3408,7 +3408,7 @@
WRITE (file_unit, '(a)') 'PRIMCOORD'
! The second number is always 1 for PRIMCOORD coordinates,
! according to http://www.xcrysden.org/doc/XSF.html
WRITE (file_unit, '(a)') natm, 1
WRITE (file_unit, '(2i6)') natm, 1
!
DO iatm = 1, natm
IF (PRESENT(forces)) THEN

View File

@ -2922,6 +2922,8 @@
!-----------------------------------------------------------------------
!!
!! Guiding functions
!! gf should not be normalized at each k point because the atomic orbitals
!! are not orthonormal and their Bloch representation not normalized.
!!
!
USE kinds, ONLY : DP
@ -2959,8 +2961,6 @@
!! Error status
REAL(KIND = DP) :: arg
!! 2*pi*(k+G)*r
REAL(KIND = DP) :: anorm
!! Anormal
REAL(KIND = DP), EXTERNAL :: DDOT
!! Scalar product of two vectors
REAL(KIND = DP), ALLOCATABLE :: gk(:, :)
@ -3028,9 +3028,6 @@
sk(ig) = CMPLX(COS(arg), - SIN(arg), KIND = DP)
gf(ig, iw) = gf(ig, iw) * sk(ig)
ENDDO
anorm = REAL(ZDOTC(npw, gf(1, iw), 1, gf(1, iw), 1))
CALL mp_sum(anorm, intra_pool_comm)
gf(:, iw) = gf(:, iw) / DSQRT(anorm)
ENDDO
!
DEALLOCATE(gk, STAT = ierr)
@ -3564,8 +3561,8 @@
ENDDO
ENDDO
ENDDO
wmod = wmod / DSQRT(DBLE(wmod)**2 + AIMAG(wmod)**2)
wann_func(:, :, :, :) = wann_func(:, :, :, :) / wmod
!wmod = wmod / DSQRT(DBLE(wmod)**2 + AIMAG(wmod)**2)
!wann_func(:, :, :, :) = wann_func(:, :, :, :) / wmod
!
! Check the 'reality' of the WF
!

View File

@ -1,4 +1,3 @@
________________________________________________________________________
*** INSTALLATION instructions for PWgui ***
@ -10,9 +9,9 @@ The PWgui package comes in two flavors:
(i) SOURCE PACKAGE
(ii) STANDALONE EXECUTABLE, which runs out of the box (but works
only on the platform for which it has been built)
only on the platform for which it was built)
N.B.: for the usage of repository version of PWgui see the
For the usage of the git repository version of PWgui, see the
INSTALL.repository file
________________________________________________________________________
@ -20,39 +19,30 @@ ________________________________________________________________________
(i) Installation instructions for SOURCE PACKAGE
________________________________________________________________________
To use the source package you need the required Tcl software, in
particular Tcl + Tk + Itcl + Itk + Iwidgets. PWgui requires the Tcl/Tk
version 8.4 or later. You may install the software from your OS
distribution.
The following Tcl/Tk packages are required to run PWgui: Tcl, Tk,
Itcl, Itk, and Iwidgets. The Tcl/Tk version 8.4 or later is
required.
For example, for GNU/Linux Debian-based distributions, execute as root
(or sudo):
For GNU/Linux Debian-based distributions, these packages can be installed as:
* apt-get update; apt-get install iwidgets4
* sudo apt update; sudo apt install iwidgets4
(this will install also tcl/tk/itcl/itk, because iwidgets depend on them).
On fedora-based distributions, the analogous command is "dnf". Hence:
On Fedora-based distributions, the analogous command is "dnf", i.e.:
* dnf install iwidgets
* sudo dnf update; sudo dnf install iwidgets
Once your computer has all the needed software, your source package is
ready to run. You only need to untar the PWgui source tarball, i.e.:
This will also install tcl/tk/itcl/itk because iwidgets depend on them.
* tar zxvf PWgui-<version>.tgz
or
* gunzip -c PWgui-<version>.tgz | tar xvf -
Once these packages are installed, the PWgui source package is ready
to run. Untar the PWgui source tarball, i.e.:
where <version> stands for version number. To launch the PWgui
program, type: pwgui.
* tar zxvf PWgui-VERSION.tgz
where VERSION stands for version number. To launch the PWgui program,
type: pwgui.
You may either add the PWgui root directory to your PATH or create a
link to pwgui launcher from some directory that is on the PATH.
If you would like to copy "pwgui" launcher (but it is more convenient
to make a link instead, see above) to some common place, such as
/usr/local/bin or /opt/bin, then you need to define the PWGUI
environmental variable so that "pwgui" will be able to locate its root
directory (i.e. source files).
link to the pwgui executable from some directory that is on the PATH.
________________________________________________________________________
@ -60,22 +50,18 @@ ________________________________________________________________________
(ii) Installation instructions for STANDALONE EXECUTABLE
________________________________________________________________________
The standalone executable is available for Linux platform and
The standalone executables are available for Linux platform and
occasionally also for Mac and Windows. They are available at
http://www-k3.ijs.si/kokalj/pwgui
For zipped pwgui-xxx.zip package do:
For zipped pwgui-VERSION.zip package do:
* unzip pwgui-xxx.zip
* unzip pwgui-VERSION.zip
For tar-gzipped pwgui-xxx.tgz package do either:
For tar-gzipped pwgui-VERSION.tgz package do either:
* tar zxvf pwgui-xxx.tgz
or:
* gunzip -c pwgui-xxx.tgz | tar xvf -
To launch the program type either:
To launch the program, type:
* ./pwgui
or
* pwgui

View File

@ -4,19 +4,17 @@
* * * from the QE repository * * *
==============================================================================
To make the PWgui fully functional do the following:
To make the PWgui fully functional, do the following:
Either:
* from the QE root directory: make gui
Or:
* or from this directory (i.e. GUI/PWgui): make init
* either in the QE root directory: make gui
* or in this directory (i.e., GUI/PWgui): make init
To run PWgui, type in this directory: ./pwgui
* to run PWgui, type from this directory: ./pwgui
BEWARE:
To run the "pwgui" the required Tcl-related software is needed (see
BEWARE:
To run "pwgui", the required Tcl-related software is needed (see
the INSTALL file).
--
Anton Kokalj (tone.kokalj@ijs.si), Jan 2022
Anton Kokalj (tone.kokalj@ijs.si), Jan 2024

View File

@ -1,3 +1,7 @@
Version: 7.x
* PWgui-7.x corresponds to respective QE-7.x with respect to
namelists, their input variables, and cards
Version: 6.7
* hp.x module added

View File

@ -7,43 +7,39 @@ This is the PWgui---a GUI for the PWscf set of programs within the
open-source Quantum ESPRESSO suite for quantum simulation of materials
(see http://www.quantum-espresso.org).
PWgui is written in [incr Tcl], an extension of Tcl scripting language
(hence no compilation is needed for the PWgui source package). However
the package depends on the [incr Tcl] and related software. Therefore
there are two possibilities:
PWgui is written in [incr Tcl], an extension of Tcl scripting
language, implying that compilation is not needed. However, it depends
on the [incr Tcl] and related software. Therefore, there are two
possibilities:
(i) to use a source package if the required Tcl software is installed
(i) to use a source package (requires the Tcl software, see the
'INSTALL' file)
(ii) to use a standalone executable which runs out of the
box. Works only on the platforms for which executables have
been built. They are available at http://www-k3.ijs.si/kokalj/pwgui
See the file "INSTALL" for installation instructions.
(ii) to use a standalone executable which runs out of the box. It
works only on the platforms for which it was built. The
executables are available at http://www-k3.ijs.si/kokalj/pwgui
CURRENT STATUS
--------------
The main purpose of the PWgui is to facilitate the creation and
manipulation (editing) of input files for Quantum ESPRESSO
programs.
It also provides a syntax checker and a formatted of input files
(i.e. pwgui --reformat program input).
The main purpose of PWgui is to facilitate the creation and
manipulation (editing) of input files for Quantum ESPRESSO programs.
It also provides a syntax checker and an input file formatter
(i.e. pwgui --reformat PROGRAM INPUT).
It is possible to run the supported QE programs by using the GUI. This
feature requires to set the path of the QE executables via
feature requires setting the path of the QE executables via the
"File-->Settings" menu (tab: PWscf settings).
The GUI can also use the XCRYSDEN program (http://www.xcrysden.org/)
for the visualization of atomic structures from the pw.x input/output
files, or for the visualization of properties calculated via the
PWgui can also use the XCRYSDEN program (http://www.xcrysden.org/) for
the visualization of atomic structures from the pw.x input/output
files or for the visualization of properties calculated via the
sequence: pw.x-->pp.x (when the property was saved into an XSF file).
Currently, the following QE programs (modules) are supported:
* pw.x
* neb.x's neb.dat
* neb.x
* ph.x
* pp.x
* projwfc.x
@ -113,4 +109,4 @@ following:
--
Anton Kokalj (tone.kokalj@ijs.si), Jan 2022
Anton Kokalj (tone.kokalj@ijs.si), Feb 2024

View File

@ -9,7 +9,7 @@
For QE developers: updating the PWgui modules
---------------------------------------------
If some new variables have been added to a given QE program, please
When new input variables are added to a given QE program, please
update corresponding module definition files, which are located in
modules/ directory.
@ -27,13 +27,13 @@ GUIB-definition language. Such a description provides two items: (i)
it defines the input-syntax and concomitantly (ii) defines the GUI.
The modules are located in the modules/ directory. Each module is
located in its own directory. For example the PW.X module is located
located in its own directory. For example, the PW.X module is located
in directory modules/pw. The following files are located therein:
* pw.tcl - the main module definition file, the rest of
the files are sourced from it
* pw-event.tcl - implementation of the event-driven mechanism
* pw-help.tcl - help file describing all the pw.x variables
* pw-help.tcl - help file describing the pw.x variables
* commands.tcl - auxiliary commands used by file pw.tcl
Hereafter such files are called "module definition files".
@ -45,21 +45,21 @@ How to add a new module to PWgui
Let's say we want to add a new module named "mymodule". We have to
perform two tasks:
(i) Write the Module Definition Files
(i) Write the module definition files
Create a directory: modules/mymodule, and therein a file
mymodule.tcl. If needed, create also files: mymodule-event.tcl,
mymodule-help.tcl, and commands.tcl.
mymodule.tcl. If needed, create also mymodule-event.tcl,
mymodule-help.tcl, and commands.tcl files.
For the syntax of the module definition file see some existing
For the syntax of the module definition file, see some existing
modules. For example, see files in modules/pp (an easy example), or in
modules/pw (a complex example). For further documentation see also:
http://www-k3.ijs.si/kokalj/guib/documentation.html.
(ii) Inform the GUI About New Module
(ii) Inform the GUI about the new module
Now we should edit the file src-tcl/pwscf.itcl, and add the following
line on the proper place (search for addModule string):
Edit the src-tcl/pwscf.itcl file, and add the following line on the
proper place (search for addModule string):
$gui addModule module mymodule "MyModule.X" \
[file join $env(PWGUI) modules mymodule mymodule.tcl] {
@ -67,9 +67,9 @@ $gui addModule module mymodule "MyModule.X" \
}
We can also add a documentation for the module. Let say that we have
an INPUT_MYMODULE.txt file. We need to tranform it into a simple
INPUT_MYMODULE.html file in the doc/ directory by editing the
It is recommended to also add a documentation for the module. Let say
that we have an INPUT_MYMODULE.txt file. We need to tranform it into a
simple INPUT_MYMODULE.html file in the doc/ directory by editing the
doc/Makefile file. Then we sould edit the src-tcl/pwscf.itcl file and
add the following line on the proper place (search for addHelp
string):

View File

@ -1,14 +1,14 @@
Thanks to:
Paolo Giannozi
for adding ld.x module, among other things ...
for adding ld1.x module, among other things
Carlo Sbraccia:
for making PWgui compatible with PWscf 2.1,
for bug reports.
for making PWgui compatible with PWscf 2.1 and
for bug reports
Carlo Cavazzoni, and Roberto Gori:
for discussions and testing.
for discussions and testing
Stefano Baroni and the rest of the PWscf team:
for showing interest in PWgui project.
for showing interest in PWgui project

View File

@ -1,5 +1,5 @@
* starkits' binary version does not parse well the command line
options; -- must be passed and also pwgui header is always printed
options
* would be nice to have kind of beginner mode for more complex modules
such as pw.x, where only the most common variable items would be

View File

@ -1 +1 @@
7.2
7.3.1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 KiB

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

View File

@ -372,9 +372,13 @@ help lfcp -helpfmt helpdoc -helptext {
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
If .TRUE. perform a constant bias potential (constant-mu)
calculation with ESM method (assume_isolated = 'esm' and
esm_bc = 'bc2' or 'bc3' must be set in SYSTEM namelist).
If .TRUE. perform a constant bias potential (constant-mu) calculation with
- ESM method (assume_isolated = 'esm' and esm_bc = 'bc2' or 'bc3' must be
set in SYSTEM namelist) or
- ESM-RISM method (assume_isolated = 'esm' and esm_bc = 'bc1' must be set
set in SYSTEM namelist, and trism = .TRUE. must be set
set in CONTROL namelist).
"fcp_mu" gives the target Fermi energy.
See the header of PW/src/fcp_module.f90 for documentation
</pre></blockquote>

View File

@ -236,7 +236,11 @@ help dftd3_hess -helpfmt helpdoc -helptext {
</li>
<br><li> <em>Description:</em>
</li>
<blockquote><pre> File where the D3 dispersion hessian matrix is read.
<blockquote><pre>
File where the D3 dispersion hessian matrix is read. Set to
'automatic.hess' to enable automatic mode (experimental). In
this mode, D3 Hessian is computed if 'automatic.hess' file is
missing.
</pre></blockquote>
</ul>

View File

@ -205,7 +205,8 @@ help iprint -helpfmt helpdoc -helptext {
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
band energies are written every <i>iprint</i> iterations
When "calculation" == 'md' (molecular dynamics)
trajectory is written every <i>iprint</i> md steps.
</pre></blockquote>
</ul>
@ -463,8 +464,15 @@ Reduces I/O but increases memory wrt the previous cases
<dl style="margin-left: 1.5em;">
<dt><tt><b>'nowf'</b> :</tt></dt>
<dd><pre style="margin-top: 0em; margin-bottom: -1em;">
save to disk only the xml data file,
never save wavefunctions and charge density
save to disk only the xml data file and the charge density
at convergence, never save wavefunctions. Restarting from
an interrupted calculation is not possible with this option.
</pre></dd>
</dl>
<dl style="margin-left: 1.5em;">
<dt><tt><b>'minimal'</b> :</tt></dt>
<dd><pre style="margin-top: 0em; margin-bottom: -1em;">
save to disk only the xml data file at convergence
</pre></dd>
</dl>
<dl style="margin-left: 1.5em;">
@ -1146,11 +1154,14 @@ help starting_magnetization -helpfmt helpdoc -helptext {
<br><li> <em>Description:</em>
</li>
<blockquote><pre>
Starting spin polarization on atomic type 'i' in a spin
polarized (LSDA or noncollinear/spin-orbit) calculation.
For non-constrained calculations, the allowed values
range between -1 (all spins down for the valence electrons
of atom type 'i') to 1 (all spins up).
Starting spin polarization on atomic type 'i' in a spin-polarized
(LSDA or non-collinear/spin-orbit) calculation.
The input values can have an absolute value greater than or equal to 1,
which will be interpreted as the site's magnetic moment.
Alternatively, the values can range between -1 and 1,
which will be interpreted as the site magnetization per valence electron.
For QE-v7.2 and older versions, only the second option is allowed.
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
@ -1998,22 +2009,28 @@ for treating the Coulomb potential divergencies at small q vectors.
</pre>
<dl style="margin-left: 1.5em;">
<dt><tt><b>'gygi-baldereschi'</b> :</tt></dt>
<dd><pre style="margin-top: 0em; margin-bottom: -1em;"> appropriate for cubic and quasi-cubic supercells
<dd><pre style="margin-top: 0em; margin-bottom: -1em;">
appropriate for cubic and quasi-cubic supercells
</pre></dd>
</dl>
<dl style="margin-left: 1.5em;">
<dt><tt><b>'vcut_spherical'</b> :</tt></dt>
<dd><pre style="margin-top: 0em; margin-bottom: -1em;"> appropriate for cubic and quasi-cubic supercells
<dd><pre style="margin-top: 0em; margin-bottom: -1em;">
appropriate for cubic and quasi-cubic supercells
(untested for non-orthogonal crystal axis)
</pre></dd>
</dl>
<dl style="margin-left: 1.5em;">
<dt><tt><b>'vcut_ws'</b> :</tt></dt>
<dd><pre style="margin-top: 0em; margin-bottom: -1em;"> appropriate for strongly anisotropic supercells, see also "ecutvcut".
<dd><pre style="margin-top: 0em; margin-bottom: -1em;">
appropriate for strongly anisotropic supercells, see also "ecutvcut"
(untested for non-orthogonal crystal axis)
</pre></dd>
</dl>
<dl style="margin-left: 1.5em;">
<dt><tt><b>'none'</b> :</tt></dt>
<dd><pre style="margin-top: 0em; margin-bottom: -1em;"> sets Coulomb potential at G,q=0 to 0.0 (required for GAU-PBE)
<dd><pre style="margin-top: 0em; margin-bottom: -1em;">
sets Coulomb potential at G,q=0 to 0.0 (required for GAU-PBE)
</pre></dd>
</dl>
</blockquote>
@ -2127,11 +2144,6 @@ Hubbard manifold number. It is possible to specify up to
three Hubbard manifolds per Hubbard atom. However, if you want
to specify three manifolds then the second and the third manifolds
will be considered as one effective manifold (see Doc/Hubbard_input.pdf)
Note: Hubbard_occ cannot be used together with fully-relativistic pseudopotentials
(i.e. when noncolin=.true. and lspinorb=.true.) since this variable does not
allow to distinguish between the occupied and unoccupied channels (this is
needed when determining the atomic orbital offsets).
</pre></blockquote>
</ul>

View File

@ -101,10 +101,10 @@ module PW -title "PWSCF GUI: module PW.x" -script {
var disk_io {
-label "Disk Input/Output (disk_io):"
-textvalue {
high medium low nowf none
high medium low nowf minimal none
}
-value {
'high' 'medium' 'low' 'nowf' 'none'
'high' 'medium' 'low' 'nowf' 'minimal' 'none'
}
-widget optionmenu
}
@ -123,7 +123,7 @@ module PW -title "PWSCF GUI: module PW.x" -script {
}
var iprint {
-label "Interval (in SCF iterations) for printing band energies (iprint):"
-label "Interval of MD steps for printing trajectory (iprint):"
-widget spinint
-validate nonnegint
}

Binary file not shown.

View File

@ -2,24 +2,28 @@
* * * README file for QE-modes * * *
========================================================================
This is QE-modes package: an open-source collection of Emacs
This is the QE-modes package: an open-source collection of Emacs
major-modes for making the editing of Quantum ESPRESSO input files
somewhat easier and more comfortable with Emacs editor.
somewhat easier and more comfortable with the Emacs editor.
QE-modes is free software, released under the GNU General Public
License. See: http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt,
QE-modes is free software released under the GNU General Public
License. See: http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
Quick installation instructions for the impatient:
--------------------------------------------------
1. copy the qe-modes/ subdirectory into ~/.emacs.d/ directory
(N.B.: use the install.sh script instead)
2. edit and append the qe-modes.emacs file to your ~/.emacs file
1. To install QE-modes, type:
For more information about the installation and usage, see the file:
Doc/user_guide.pdf
./install.sh
This script copies the qe-modes/ subdirectory into the ~/.emacs.d/
directory.
2. Edit and append the 'qe-modes.emacs' file to your ~/.emacs file.
For more information about the installation and usage, see the
Doc/user_guide.pdf file.
* * *

View File

@ -13,7 +13,7 @@ To generate the QE-modes sources:
make
which will create the *.el and *.elc files in qe-modes/ subdirectory.
From this point on, see the either README file or Doc/user_guide.pdf.
From this point on, see either the README file or Doc/user_guide.pdf.
To generate the QE-modes tarball:

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -81,21 +81,21 @@
(autoload 'pw-mode' "pw-mode.elc"
"Major mode for editing Quantum ESPRESSO pw.x input files" t)
(autoload 'cp-mode' "cp-mode.elc"
"Major mode for editing Quantum ESPRESSO cp.x input files" t)
(autoload 'pp-mode' "pp-mode.elc"
"Major mode for editing Quantum ESPRESSO pp.x input files" t)
(autoload 'ld1-mode' "ld1-mode.elc"
"Major mode for editing Quantum ESPRESSO ld1.x input files" t)
(autoload 'neb-mode' "neb-mode.elc"
"Major mode for editing Quantum ESPRESSO neb.x input files" t)
(autoload 'pp-mode' "pp-mode.elc"
"Major mode for editing Quantum ESPRESSO pp.x input files" t)
(autoload 'ph-mode' "ph-mode.elc"
"Major mode for editing Quantum ESPRESSO ph.x input files" t)
(autoload 'cp-mode' "cp-mode.elc"
"Major mode for editing Quantum ESPRESSO cp.x input files" t)
(provide 'qe-modes)

View File

@ -148,7 +148,6 @@ set(src_simple
simple/epe.f90
simple/gk_sort_limit.f90
simple/khamiltonian.f90
simple/init_us_2_max.f90
simple/commutator.f90)
set(src_simple_bse

View File

@ -18,7 +18,6 @@ SIMPLEOBJS = \
epe.o \
gk_sort_limit.o \
khamiltonian.o \
init_us_2_max.o \
commutator.o

View File

@ -14,8 +14,8 @@ subroutine gen_beta_simple (qk, npw_max, dvkb)
USE klist, ONLY : ngk
USE gvect, ONLY : mill, eigts1, eigts2, eigts3, g
USE uspp, ONLY : nkb, indv, nhtol, nhtolm
USE uspp_data, ONLY : nqx, tab, dq
USE uspp_param, ONLY : upf, lmaxkb, nbetam, nh
USE beta_mod, ONLY : interp_dbeta
USE uspp_param, ONLY : lmaxkb, nbetam, nh
USE io_global, ONLY : stdout
!
implicit none
@ -26,7 +26,7 @@ subroutine gen_beta_simple (qk, npw_max, dvkb)
!
! local variables
!
integer :: ikb, nb, ih, ig, i0, i1, i2, i3 , nt
integer :: ikb, nb, ih, ig, nt
! counter on beta functions
! counter on beta functions
! counter on beta functions
@ -34,7 +34,7 @@ subroutine gen_beta_simple (qk, npw_max, dvkb)
! index of the first nonzero point in the r
! counter on atomic type
real(DP) :: arg, px, ux, vx, wx
real(DP) :: arg
! argument of the atomic phase factor
complex(DP) :: phase, pref
@ -43,7 +43,6 @@ subroutine gen_beta_simple (qk, npw_max, dvkb)
integer :: na, l, iig, lm, iq
real(DP), allocatable :: djl (:,:,:), ylm (:,:), q (:), gk (:,:)
real(DP) :: qt
complex(DP), allocatable :: sk (:)
call start_clock('gen_beta1')
@ -70,28 +69,11 @@ subroutine gen_beta_simple (qk, npw_max, dvkb)
call stop_clock('stres_us32')
call start_clock('stres_us33')
do ig = 1, npw_max
q (ig) = SQRT (q(ig)) * tpiba
enddo
do nt = 1, ntyp
do nb = 1, upf(nt)%nbeta
do ig = 1, npw_max
qt = sqrt(q (ig)) * tpiba
px = qt / dq - int (qt / dq)
ux = 1.d0 - px
vx = 2.d0 - px
wx = 3.d0 - px
i0 = qt / dq + 1
i1 = i0 + 1
i2 = i0 + 2
i3 = i0 + 3
if (i3 <= nqx) then ! Approximation
djl(ig,nb,nt) = ( tab (i0, nb, nt) * (-vx*wx-ux*wx-ux*vx)/6.d0 + &
tab (i1, nb, nt) * (+vx*wx-px*wx-px*vx)/2.d0 - &
tab (i2, nb, nt) * (+ux*wx-px*wx-px*ux)/2.d0 + &
tab (i3, nb, nt) * (+ux*vx-px*vx-px*ux)/6.d0 )/dq
else
djl(ig,nb,nt) = 0.d0 ! Approximation
endif
enddo
enddo
CALL interp_dbeta( nt, npw_max, q, djl(:,:,nt) )
enddo
call stop_clock('stres_us33')
call start_clock('stres_us34')
@ -156,7 +138,7 @@ subroutine gen_beta_simple_2 (qk, npw_max, u, dvkb)
USE klist, ONLY : ngk, igk_k
USE gvect, ONLY : mill, eigts1, eigts2, eigts3, g
USE uspp, ONLY : nkb, indv, nhtol, nhtolm
USE uspp_data, ONLY : nqx, tab, dq
USE beta_mod, ONLY : interp_beta
USE uspp_param, ONLY : upf, lmaxkb, nbetam, nh
!
implicit none
@ -166,10 +148,9 @@ subroutine gen_beta_simple_2 (qk, npw_max, u, dvkb)
real(DP) :: u (3)
complex(DP) :: dvkb (npw_max, nkb)
integer :: na, nt, nb, ih, l, lm, ikb, iig, ipol, i0, i1, i2, &
i3, ig
integer :: na, nt, nb, ih, l, lm, ikb, iig, ipol, ig
real(DP), allocatable :: gk(:,:), q (:)
real(DP) :: px, ux, vx, wx, arg
real(DP) :: arg
real(DP), allocatable :: vkb0 (:,:,:), dylm (:,:), dylm_u (:,:)
! dylm = d Y_lm/dr_i in cartesian axes
@ -211,26 +192,7 @@ subroutine gen_beta_simple_2 (qk, npw_max, u, dvkb)
do nt = 1, ntyp
! calculate beta in G-space using an interpolation table
do nb = 1, upf(nt)%nbeta
do ig = 1, npw_max
px = q (ig) / dq - int (q (ig) / dq)
ux = 1.d0 - px
vx = 2.d0 - px
wx = 3.d0 - px
i0 = q (ig) / dq + 1
i1 = i0 + 1
i2 = i0 + 2
i3 = i0 + 3
if (i3<=nqx) then ! DEBUG
vkb0 (ig, nb, nt) = tab (i0, nb, nt) * ux * vx * wx / 6.d0 + &
tab (i1, nb, nt) * px * vx * wx / 2.d0 - &
tab (i2, nb, nt) * px * ux * wx / 2.d0 + &
tab (i3, nb, nt) * px * ux * vx / 6.d0
else
vkb0 (ig, nb, nt) = 0.d0 ! DEBUG
endif
enddo
enddo
CALL interp_beta( nt, npw_max, q, vkb0(:,:,nt) )
enddo
deallocate (q)

View File

@ -1,150 +0,0 @@
!
! Copyright (C) 2001-2015 Quantum ESPRESSO group
! This file is distributed under the terms of the
! GNU General Public License. See the file `License'
! in the root directory of the present distribution,
! or http://www.gnu.org/copyleft/gpl.txt .
!
!
!----------------------------------------------------------------------
subroutine init_us_2_max (npw_, igk_, q_, vkb_)
!----------------------------------------------------------------------
!
! Calculates beta functions (Kleinman-Bylander projectors), with
! structure factor, for all atoms, in reciprocal space. On input:
! npw_ : number of PWs
! igk_(npw_) : indices of G in the list of q+G vectors
! q_(3) : q vector (2pi/a units)
! On output:
! vkb_(npw_,nkb) : beta functions
!
USE kinds, ONLY : DP
USE ions_base, ONLY : nat, ntyp => nsp, ityp, tau
USE cell_base, ONLY : tpiba, omega
USE constants, ONLY : tpi
USE gvect, ONLY : eigts1, eigts2, eigts3, mill, g
USE uspp_data, ONLY : nqx, dq, tab
USE uspp, ONLY : nkb, nhtol, nhtolm, indv
USE uspp_param, ONLY : upf, lmaxkb, nhm, nh
USE io_global, ONLY : stdout
!
implicit none
!
INTEGER, INTENT (IN) :: npw_, igk_ (npw_)
REAL(dp), INTENT(IN) :: q_(3)
COMPLEX(dp), INTENT(OUT) :: vkb_ (npw_, nkb)
!
! Local variables
!
integer :: i0,i1,i2,i3, ig, lm, na, nt, nb, ih, jkb
real(DP) :: px, ux, vx, wx, arg
real(DP), allocatable :: gk (:,:), qg (:), vq (:), ylm (:,:), vkb1(:,:)
complex(DP) :: phase, pref
complex(DP), allocatable :: sk(:)
integer :: iq
!
!
if (lmaxkb.lt.0) return
call start_clock ('init_us_2_max')
allocate (vkb1( npw_,nhm))
allocate ( sk( npw_))
allocate ( qg( npw_))
allocate ( vq( npw_))
allocate ( ylm( npw_, (lmaxkb + 1) **2))
allocate ( gk( 3, npw_))
!
! write(*,'(3i4,i5,3f10.5)') size(tab,1), size(tab,2), size(tab,3), size(vq), q_
do ig = 1, npw_
gk (1,ig) = q_(1) + g(1, igk_(ig) )
gk (2,ig) = q_(2) + g(2, igk_(ig) )
gk (3,ig) = q_(3) + g(3, igk_(ig) )
qg (ig) = gk(1, ig)**2 + gk(2, ig)**2 + gk(3, ig)**2
enddo
!
call ylmr2 ((lmaxkb+1)**2, npw_, gk, qg, ylm)
!
! set now qg=|q+G| in atomic units
!
do ig = 1, npw_
qg(ig) = sqrt(qg(ig))*tpiba
enddo
! |beta_lm(q)> = (4pi/omega).Y_lm(q).f_l(q).(i^l).S(q)
jkb = 0
do nt = 1, ntyp
! calculate beta in G-space using an interpolation table f_l(q)=\int _0 ^\infty dr r^2 f_l(r) j_l(q.r)
do nb = 1, upf(nt)%nbeta
do ig = 1, npw_
px = qg (ig) / dq - int (qg (ig) / dq)
ux = 1.d0 - px
vx = 2.d0 - px
wx = 3.d0 - px
i0 = INT( qg (ig) / dq ) + 1
i1 = i0 + 1
i2 = i0 + 2
i3 = i0 + 3
if (i3<=nqx) then ! WARNING: Here we change from the original subroutine init_us_2.f90
vq (ig) = tab (i0, nb, nt) * ux * vx * wx / 6.d0 + &
tab (i1, nb, nt) * px * vx * wx / 2.d0 - &
tab (i2, nb, nt) * px * ux * wx / 2.d0 + &
tab (i3, nb, nt) * px * ux * vx / 6.d0
else
vq(ig) = 0.0
endif
enddo
! add spherical harmonic part (Y_lm(q)*f_l(q))
do ih = 1, nh (nt)
if (nb.eq.indv (ih, nt) ) then
!l = nhtol (ih, nt)
lm =nhtolm (ih, nt)
do ig = 1, npw_
vkb1 (ig,ih) = ylm (ig, lm) * vq (ig)
enddo
endif
enddo
enddo
!
! vkb1 contains all betas including angular part for type nt
! now add the structure factor and factor (-i)^l
!
do na = 1, nat
! ordering: first all betas for atoms of type 1
! then all betas for atoms of type 2 and so on
if (ityp (na) .eq.nt) then
arg = (q_(1) * tau (1, na) + &
q_(2) * tau (2, na) + &
q_(3) * tau (3, na) ) * tpi
phase = CMPLX(cos (arg), - sin (arg) ,kind=DP)
do ig = 1, npw_
sk (ig) = eigts1 (mill(1,igk_(ig)), na) * &
eigts2 (mill(2,igk_(ig)), na) * &
eigts3 (mill(3,igk_(ig)), na)
enddo
do ih = 1, nh (nt)
jkb = jkb + 1
pref = (0.d0, -1.d0) **nhtol (ih, nt) * phase
do ig = 1, npw_
vkb_(ig, jkb) = vkb1 (ig,ih) * sk (ig) * pref
enddo
enddo
endif
enddo
enddo
deallocate (gk)
deallocate (ylm)
deallocate (vq)
deallocate (qg)
deallocate (sk)
deallocate (vkb1)
call stop_clock ('init_us_2_max')
return
end subroutine init_us_2_max

View File

@ -232,7 +232,7 @@ subroutine khamiltonian
!
call start_clock('Vnloc')
if (nkb>0) then
call init_us_2_max(npw_max,igkk,qk,vkb_max) ! get the projectors \beta_Ilm (k-dependent)
call init_us_2(npw_max,igkk,qk,vkb_max) ! get the projectors \beta_Ilm (k-dependent)
endif
!vkb_max(npwx+1:npw_max,1:nkb) = 0.d0 ! WARNING: HERE I PUT TO ZERO THE ELEMENTS OF BETA WiTH G > npwx
!

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: 7.3)</span>
hp.x / PWscf / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: hp.x / PWscf / Quantum ESPRESSO (version: 7.3)
Program: hp.x / PWscf / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------

View File

@ -56,13 +56,11 @@ subroutine hp_allocate_q
ENDIF
ENDIF
!
IF (okvan) THEN
ALLOCATE (eigqts(nat))
ALLOCATE (becp1(nksq))
DO ik = 1,nksq
CALL allocate_bec_type ( nkb, nbnd, becp1(ik) )
ENDDO
ENDIF
ALLOCATE (eigqts(nat))
ALLOCATE (becp1(nksq))
DO ik = 1,nksq
CALL allocate_bec_type ( nkb, nbnd, becp1(ik) )
ENDDO
!
ALLOCATE (swfcatomk(npwx*npol,nwfcU))
IF (lgamma) THEN

View File

@ -45,16 +45,14 @@ SUBROUTINE hp_dealloc_q()
if (allocated(ikmkmqs)) deallocate (ikmkmqs)
if (allocated(m_loc)) deallocate (m_loc)
!
IF (okvan) THEN
if (allocated(eigqts)) deallocate (eigqts)
!
if (allocated(becp1)) then
do ik=1,size(becp1)
call deallocate_bec_type ( becp1(ik) )
enddo
deallocate(becp1)
endif
ENDIF
if (allocated(eigqts)) deallocate (eigqts)
!
if (allocated(becp1)) then
do ik=1,size(becp1)
call deallocate_bec_type ( becp1(ik) )
enddo
deallocate(becp1)
endif
if (allocated(becpt)) then
do ik=1,size(becpt)
call deallocate_bec_type ( becpt(ik) )

View File

@ -347,8 +347,8 @@ input_description -distribution {Quantum ESPRESSO} -package KCW -program kcw.x {
default { .FALSE. }
info {
If .true. the interpolated band structure is computed along
a path secified with the K_POINTS card ( see PW documentation
https://www.quantum-espresso.org/Doc/INPUT_PW.html#idm1487 )
a path specified with the K_POINTS card ( see PW documentation
https://www.quantum-espresso.org/Doc/INPUT_PW.html#K_POINTS )
}
}
@ -382,7 +382,7 @@ input_description -distribution {Quantum ESPRESSO} -package KCW -program kcw.x {
}
card K_POINTS {
message { see https://www.quantum-espresso.org/Doc/INPUT_PW.html#idm1487 }
}
message { see https://www.quantum-espresso.org/Doc/INPUT_PW.html#K_POINTS }
}
}

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:
kcw.x / KCW / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3)</span>
kcw.x / KCW / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">
@ -639,8 +639,8 @@ than 1e-4 Ry (Hard coded for now, see <a href="#spread_thr">spread_thr</a>).
</tr>
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
If .true. the interpolated band structure is computed along
a path secified with the K_POINTS card ( see PW documentation
<a href="https://www.quantum-espresso.org/Doc/INPUT_PW.html#idm1487">https://www.quantum-espresso.org/Doc/INPUT_PW.html#idm1487</a> )
a path specified with the K_POINTS card ( see PW documentation
<a href="https://www.quantum-espresso.org/Doc/INPUT_PW.html#K_POINTS">https://www.quantum-espresso.org/Doc/INPUT_PW.html#K_POINTS</a> )
</pre></blockquote></td></tr>
</table>
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
@ -700,13 +700,13 @@ are computed (R=0 and n=m).
<a name="idm130"></a><a name="K_POINTS"></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">K_POINTS</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><p><pre> see <a href="https://www.quantum-espresso.org/Doc/INPUT_PW.html#idm1487">https://www.quantum-espresso.org/Doc/INPUT_PW.html#idm1487</a>
<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><p><pre> see <a href="https://www.quantum-espresso.org/Doc/INPUT_PW.html#K_POINTS">https://www.quantum-espresso.org/Doc/INPUT_PW.html#K_POINTS</a>
</pre></p></td></tr></tbody></table></td></tr>
</table>
</td></tr>
</table>
<small>
This file has been created by helpdoc utility on Fri Dec 15 09:59:11 CET 2023.
This file has been created by helpdoc utility on Fri Feb 23 17:16:08 CET 2024.
</small>
</body>
</html>

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: kcw.x / KCW / Quantum ESPRESSO (version: 7.3)
Program: kcw.x / KCW / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------
@ -368,8 +368,8 @@ NAMELIST: &HAM
Type: LOGICAL
Default: .FALSE.
Description: If .true. the interpolated band structure is computed along
a path secified with the K_POINTS card ( see PW documentation
https://www.quantum-espresso.org/Doc/INPUT_PW.html#idm1487 )
a path specified with the K_POINTS card ( see PW documentation
https://www.quantum-espresso.org/Doc/INPUT_PW.html#K_POINTS )
+--------------------------------------------------------------------
+--------------------------------------------------------------------
@ -408,9 +408,9 @@ NAMELIST: &HAM
========================================================================
CARD: K_POINTS
see https://www.quantum-espresso.org/Doc/INPUT_PW.html#idm1487
see https://www.quantum-espresso.org/Doc/INPUT_PW.html#K_POINTS
===END OF CARD==========================================================
This file has been created by helpdoc utility on Fri Dec 15 09:59:11 CET 2023
This file has been created by helpdoc utility on Fri Feb 23 17:16:08 CET 2024

View File

@ -356,9 +356,9 @@ SUBROUTINE pcegterg_gpu(h_psi_ptr, s_psi_ptr, uspp, g_psi_ptr, &
! ... approximate inverse iteration
!
ew_d = ew
psi_d(1:npwx*npol, nb1:nb1+notcnv) = psi(1:npwx*npol, nb1:nb1+notcnv)
psi_d(1:npwx*npol, nb1:nb1+notcnv-1) = psi(1:npwx*npol, nb1:nb1+notcnv-1)
CALL g_psi_ptr( npwx, npw, notcnv, npol, psi_d(1,nb1), ew_d(nb1) )
psi(1:npwx*npol, nb1:nb1+notcnv) = psi_d(1:npwx*npol, nb1:nb1+notcnv)
psi(1:npwx*npol, nb1:nb1+notcnv-1) = psi_d(1:npwx*npol, nb1:nb1+notcnv-1)
!
! ... "normalize" correction vectors psi(:,nb1:nbase+notcnv) in
! ... order to improve numerical stability of subspace diagonalization
@ -401,9 +401,9 @@ SUBROUTINE pcegterg_gpu(h_psi_ptr, s_psi_ptr, uspp, g_psi_ptr, &
!
! ... here compute the hpsi and spsi of the new functions
!
psi_d(1:npwx*npol, nb1:nb1+notcnv) = psi(1:npwx*npol, nb1:nb1+notcnv)
psi_d(1:npwx*npol, nb1:nb1+notcnv-1) = psi(1:npwx*npol, nb1:nb1+notcnv-1)
CALL h_psi_ptr( npwx, npw, notcnv, psi_d(1,nb1), hpsi_d(1,nb1) ) ; nhpsi = nhpsi + notcnv
hpsi(1:npwx*npol, nb1:nb1+notcnv) = hpsi_d(1:npwx*npol, nb1:nb1+notcnv)
hpsi(1:npwx*npol, nb1:nb1+notcnv-1) = hpsi_d(1:npwx*npol, nb1:nb1+notcnv-1)
!
IF ( uspp ) CALL s_psi_ptr( npwx, npw, notcnv, psi_d(1,nb1), spsi_d(1,nb1) )
IF ( uspp ) spsi = spsi_d

View File

@ -7,8 +7,8 @@
!
!
!----------------------------------------------------------------------------
! Questa e' una copia di c_bands_nscf intesa per un confronto con
! thermo_pw.
! Copy of c_bands_nscf, for comparison with thermo_pw.
! FIXME: is the above correct?
!
!
SUBROUTINE c_bands_nscf_ph( )
@ -21,12 +21,12 @@ SUBROUTINE c_bands_nscf_ph( )
USE io_files, ONLY : iunhub, iunwfc, nwordwfc, nwordwfcU
USE buffers, ONLY : get_buffer, save_buffer, close_buffer, open_buffer
USE basis, ONLY : starting_wfc
USE klist, ONLY : nkstot, nks, xk, ngk, igk_k, igk_k_d
USE klist, ONLY : nkstot, nks, xk, ngk, igk_k
USE uspp, ONLY : vkb, nkb
USE gvect, ONLY : g
USE wvfct, ONLY : et, nbnd, npwx, current_k
USE control_lr, ONLY : lgamma
USE control_flags, ONLY : ethr, restart, isolve, io_level, iverbosity, use_gpu
USE control_flags, ONLY : ethr, restart, isolve, io_level, iverbosity
USE ldaU, ONLY : lda_plus_u, Hubbard_projectors, wfcU, lda_plus_u_kind
USE lsda_mod, ONLY : current_spin, lsda, isk
USE wavefunctions, ONLY : evc

View File

@ -125,7 +125,7 @@ couple : pw cp
if test -d COUPLE ; then \
( cd COUPLE ; $(MAKE) TLDEPS= all || exit 1 ) ; fi
epw: phlibs
epw: phlibs w90lib
if test -d EPW ; then \
( cd EPW ; $(MAKE) all || exit 1; \
cd ../bin; ln -fs ../EPW/bin/epw.x . ); fi
@ -138,7 +138,7 @@ travis : pwall epw
if test -d test-suite ; then \
( cd test-suite ; make run-travis || exit 1 ) ; fi
kcw : pwlibs lrmods pp w90
kcw : pwlibs lrmods pp w90lib
if test -d KCW ; then \
( cd KCW ; $(MAKE) all || exit 1 ) ; fi
@ -240,7 +240,10 @@ libmbd:
# plugins
#########################################################
w90: bindir $(LAPACK)
w90: w90lib
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
w90lib: bindir $(LAPACK)
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
want: $(LAPACK)

View File

@ -1,5 +1,6 @@
set(src_modules
additional_kpoints.f90
atomic_wfc_mod.f90
autopilot.f90
basic_algebra_routines.f90
becmod.f90

View File

@ -9,6 +9,7 @@ MODFLAGS=$(BASEMOD_FLAGS)
MODULES = \
additional_kpoints.o \
atomic_wfc_mod.o \
autopilot.o \
basic_algebra_routines.o \
becmod.o \

466
Modules/atomic_wfc_mod.f90 Normal file
View File

@ -0,0 +1,466 @@
!
! Copyright (C) 2023-2024 Quantum ESPRESSO Foundation
! This file is distributed under the terms of the
! GNU General Public License. See the file `License'
! in the root directory of the present distribution,
! or http://www.gnu.org/copyleft/gpl.txt .
!
!
!-----------------------------------------------------------------------
SUBROUTINE atomic_wfc_acc( xk, npw, igk_k, nat, nsp, ityp, tau, &
noncolin, domag, angle1, angle2, starting_spin_angle, &
npwx, npol, natomwfc, wfcatom )
!-----------------------------------------------------------------------
!! This routine computes the superposition of atomic wavefunctions
!! See below for input variables, output on wfcatom (ACC variable)
!! Computation is performed on GPU if available
!! Can be called by CP as well (does not use PW-specific modules)
!
USE kinds, ONLY : DP
USE constants, ONLY : tpi
USE cell_base, ONLY : omega, tpiba
USE gvect, ONLY : mill, eigts1, eigts2, eigts3, g
USE uspp_param, ONLY : upf, nwfcm
!
IMPLICIT NONE
!
REAL(DP), INTENT(IN) :: xk(3)
!! k-point
INTEGER, INTENT(IN) :: nat
!! number of atoms
INTEGER, INTENT(IN) :: nsp
!! number of types of atoms
INTEGER, INTENT(IN) :: ityp(nat)
!! indices of the type of atom for each atom
REAL(DP), INTENT(IN) :: tau(3,nat)
!! atomic positions (in units of alat)
INTEGER, INTENT(IN) :: npw
!! number of plane waves
INTEGER, INTENT(IN) :: igk_k(npw)
!! index of G in the k+G list
LOGICAL, INTENT(IN) :: noncolin
!! true if calculation noncolinear
LOGICAL, INTENT(IN) :: domag
!! true if nonzero noncolinear magnetization
LOGICAL, INTENT(IN) :: starting_spin_angle
!! true if initial spin direction is set
REAL(DP), INTENT(IN) :: angle1(nsp)
!! angle theta of initial spin direction
REAL(DP), INTENT(IN) :: angle2(nsp)
!! angle phi of initial spin direction
INTEGER, INTENT(IN) :: npol
!! npol = 2 for noncolinear calculations
INTEGER, INTENT(IN) :: npwx
!! max number of plane waves
INTEGER, INTENT(IN) :: natomwfc
!! number of atomic wavefunctions
COMPLEX(DP), INTENT(OUT) :: wfcatom(npwx,npol,natomwfc)
!! Superposition of atomic wavefunctions
!
! ... local variables
!
INTEGER :: n_starting_wfc, lmax_wfc, nt, l, nb, na, m, lm, ig, iig, &
i0, i1, i2, i3
COMPLEX(DP) :: kphase
REAL(DP) :: arg, px, ux, vx, wx
!
REAL(DP) :: xk1, xk2, xk3, qgr
REAL(DP), ALLOCATABLE :: chiq(:,:,:), qg(:)
REAL(DP), ALLOCATABLE :: ylm(:,:), gk(:,:)
COMPLEX(DP), ALLOCATABLE :: sk(:)
!
!
! calculate max angular momentum required in wavefunctions
lmax_wfc = 0
DO nt = 1, nsp
lmax_wfc = MAX( lmax_wfc, MAXVAL( upf(nt)%lchi(1:upf(nt)%nwfc) ) )
END DO
!
ALLOCATE( ylm(npw,(lmax_wfc+1)**2), chiq(npw,nwfcm,nsp))
ALLOCATE( qg(npw), gk(3,npw), sk(npw) )
!$acc data create (ylm, chiq, gk, qg, sk) &
!$acc present(g, igk_k, eigts1, eigts2, eigts3, mill, wfcatom)
!
xk1 = xk(1)
xk2 = xk(2)
xk3 = xk(3)
!
!$acc parallel loop
DO ig = 1, npw
iig = igk_k(ig)
gk(1,ig) = xk1 + g(1,iig)
gk(2,ig) = xk2 + g(2,iig)
gk(3,ig) = xk3 + g(3,iig)
qg(ig) = gk(1,ig)**2 + gk(2,ig)**2 + gk(3,ig)**2
END DO
!
! ylm = spherical harmonics
!
CALL ylmr2( (lmax_wfc+1)**2, npw, gk, qg, ylm )
!
! set now q=|k+G| in atomic units
!
!$acc parallel loop
DO ig = 1, npw
qg(ig) = SQRT( qg(ig) )*tpiba
END DO
!
! chiq = radial fourier transform of atomic orbitals chi
!
CALL interp_atwfc ( npw, qg, nwfcm, chiq )
!
!$acc kernels
wfcatom(:,:,:) = (0.0_dp, 0.0_dp)
!$acc end kernels
!
n_starting_wfc = 0
!
DO na = 1, nat
arg = (xk1*tau(1,na) + xk2*tau(2,na) + xk3*tau(3,na)) * tpi
kphase = CMPLX( COS(arg), - SIN(arg) ,KIND=DP)
!
! sk is the structure factor
!
!$acc parallel loop
DO ig = 1, npw
iig = igk_k(ig)
sk(ig) = kphase * eigts1(mill(1,iig),na) * &
eigts2(mill(2,iig),na) * &
eigts3(mill(3,iig),na)
END DO
!
nt = ityp(na)
DO nb = 1, upf(nt)%nwfc
IF ( upf(nt)%oc(nb) >= 0.d0 ) THEN
!
! the factor i^l MUST BE PRESENT in order to produce
! wavefunctions for k=0 that are real in real space
!
IF ( noncolin ) THEN
!
IF ( upf(nt)%has_so ) THEN
!
IF (starting_spin_angle.OR..NOT.domag) THEN
CALL atomic_wfc_so ( npw, npwx, npol, natomwfc, nsp, nt, &
nb, lmax_wfc, ylm, chiq, sk, n_starting_wfc, wfcatom )
ELSE
CALL atomic_wfc_so_mag ( npw, npwx, npol, natomwfc, nsp, &
nt, nb, angle1, angle2, lmax_wfc, ylm, chiq, sk, &
n_starting_wfc, wfcatom )
END IF
!
ELSE
!
CALL atomic_wfc_nc ( npw, npwx, npol, natomwfc, nsp, &
nt, nb, angle1, angle2, lmax_wfc, ylm, chiq, sk, &
n_starting_wfc, wfcatom )
!
END IF
!
ELSE
!
CALL atomic_wfc_lsda ( npw, npwx, npol, natomwfc, &
nsp, nt, nb, lmax_wfc, ylm, chiq, sk, &
n_starting_wfc, wfcatom )
!
END IF
!
END IF
!
END DO
!
END DO
IF ( n_starting_wfc /= natomwfc) call errore ('atomic_wfc', &
'internal error: some wfcs were lost ', 1 )
!$acc end data
DEALLOCATE( sk, gk, qg, chiq, ylm )
RETURN
END SUBROUTINE atomic_wfc_acc
!
!----------------------------------------------------------------
SUBROUTINE atomic_wfc_so( npw, npwx, npol, natomwfc, nsp, nt, &
nb, lmax_wfc, ylm, chiq, sk, n_starting_wfc, wfcatom )
!------------------------------------------------------------
!! Spin-orbit case, no magnetization
!
USE kinds, ONLY : DP
USE upf_spinorb, ONLY : rot_ylm, lmaxx
USE uspp_param, ONLY : upf, nwfcm
!
IMPLICIT NONE
INTEGER, INTENT(IN) :: nsp, nt, nb, natomwfc, npw, npwx, npol, lmax_wfc
REAL(DP), INTENT(IN) :: chiq(npw,nwfcm,nsp)
REAL(DP), INTENT(IN) :: ylm(npw,(lmax_wfc+1)**2)
COMPLEX(DP), INTENT(IN) :: sk(npw)
INTEGER, INTENT(INOUT) :: n_starting_wfc
COMPLEX(DP), INTENT(INOUT) :: wfcatom(npwx,npol,natomwfc)
!
REAL(DP) :: fact(2), fact_is, j
COMPLEX(DP) :: rot_ylm_in1, lphase
REAL(DP), EXTERNAL :: spinor
INTEGER, EXTERNAL :: sph_ind
INTEGER :: l, ind, ind1, n1, is, m, ig
!
j = upf(nt)%jchi(nb)
l = upf(nt)%lchi(nb)
lphase = (0.d0,1.d0)**l
!
DO m = -l-1, l
fact(1) = spinor(l,j,m,1)
fact(2) = spinor(l,j,m,2)
IF ( ABS(fact(1)) > 1.d-8 .OR. ABS(fact(2)) > 1.d-8 ) THEN
n_starting_wfc = n_starting_wfc + 1
IF (n_starting_wfc > natomwfc) CALL errore &
('atomic_wfc_so', 'internal error: too many wfcs', 1)
!
DO is = 1, 2
fact_is = fact(is)
IF (ABS(fact(is)) > 1.d-8) THEN
ind = lmaxx + 1 + sph_ind(l,j,m,is)
DO n1 = 1, 2*l+1
ind1 = l**2+n1
rot_ylm_in1 = rot_ylm(ind,n1)
IF (ABS(rot_ylm_in1) > 1.d-8) THEN
!$acc parallel loop
DO ig = 1, npw
wfcatom(ig,is,n_starting_wfc) = &
wfcatom(ig,is,n_starting_wfc) + &
lphase * rot_ylm_in1 * sk(ig) * &
CMPLX(ylm(ig,ind1)*fact_is* &
chiq(ig,nb,nt), KIND=DP)
END DO
ENDIF
ENDDO
END IF
END DO
!
END IF
END DO
!
END SUBROUTINE atomic_wfc_so
!
SUBROUTINE atomic_wfc_so_mag( npw, npwx, npol, natomwfc, nsp, nt, &
nb, angle1, angle2, lmax_wfc, ylm, chiq, sk, &
n_starting_wfc, wfcatom )
!------------------------------------------------------------
!
!! Spin-orbit case, magnetization along "angle1" and "angle2"
!! In the magnetic case we always assume that magnetism is much larger
!! than spin-orbit and average the wavefunctions at l+1/2 and l-1/2
!! filling then the up and down spinors with the average wavefunctions,
!! according to the direction of the magnetization, following what is
!! done in the noncollinear case.
!
USE kinds, ONLY : DP
USE constants, ONLY : pi
USE uspp_param, ONLY : upf, nwfcm
!
IMPLICIT NONE
INTEGER, INTENT(IN) :: nsp, nt, nb, natomwfc, npw, npwx, npol, lmax_wfc
REAL(DP), INTENT(IN) :: chiq(npw,nwfcm,nsp)
REAL(DP), INTENT(IN) :: ylm(npw,(lmax_wfc+1)**2)
COMPLEX(DP), INTENT(IN) :: sk(npw)
REAL(DP), INTENT(IN) :: angle1(*)
!! angle theta of initial spin direction
REAL(DP), INTENT(IN) :: angle2(*)
!! angle phi of initial spin direction
INTEGER, INTENT(INOUT) :: n_starting_wfc
COMPLEX(DP), INTENT(INOUT) :: wfcatom(npwx,npol,natomwfc)
!
REAL(DP) :: alpha, gamman, j
COMPLEX(DP) :: fup, fdown, aux, lphase
INTEGER :: nc, ib, ig, l, m, lm
!
j = upf(nt)%jchi(nb)
l = upf(nt)%lchi(nb)
lphase = (0.d0,1.d0)**l
!
!
! This routine creates two functions only in the case j=l+1/2 or exit in the
! other case
!
IF (ABS(j-l+0.5_DP)<1.d-4) RETURN
!
! Find the functions j=l-1/2
!
nc = nb
IF (l > 0) THEN
DO ib = 1, upf(nt)%nwfc
IF ((upf(nt)%lchi(ib) == l).AND. &
(ABS(upf(nt)%jchi(ib)-l+0.5_DP)<1.d-4)) THEN
nc = ib
EXIT
ENDIF
ENDDO
END IF
!
! and construct the starting wavefunctions as in the noncollinear case.
!
alpha = angle1(nt)
gamman = - angle2(nt) + 0.5d0*pi
!
DO m = 1, 2*l+1
lm = l**2+m
n_starting_wfc = n_starting_wfc + 1
IF ( n_starting_wfc + 2*l+1 > natomwfc ) CALL errore &
('atomic_wfc_so_mag', 'internal error: too many wfcs', 1)
!
!$acc parallel loop
DO ig = 1, npw
!
! Average the two functions
!
aux = sk(ig)* CMPLX( ylm(ig,lm) * (chiq(ig,nb,nt)*DBLE(l+1) + &
chiq(ig,nc,nt)*l)/DBLE(2*l+1), KIND=DP )
!
! now, rotate wfc as needed
! first : rotation with angle alpha around (OX)
!
fup = CMPLX(COS(0.5d0*alpha), KIND=DP)*aux
fdown = (0.d0,1.d0)*CMPLX(SIN(0.5d0*alpha), KIND=DP)*aux
!
! Now, build the orthogonal wfc
! first rotation with angle (alpha+pi) around (OX)
!
wfcatom(ig,1,n_starting_wfc) = (CMPLX(COS(0.5d0*gamman), KIND=DP) &
+(0.d0,1.d0)*CMPLX(SIN(0.5d0*gamman), KIND=DP))*fup
wfcatom(ig,2,n_starting_wfc) = (CMPLX(COS(0.5d0*gamman), KIND=DP) &
-(0.d0,1.d0)*CMPLX(SIN(0.5d0*gamman), KIND=DP))*fdown
!
! second: rotation with angle gamma around (OZ)
!
! Now, build the orthogonal wfc
! first rotation with angle (alpha+pi) around (OX)
!
fup = CMPLX(COS(0.5d0*(alpha+pi)), KIND=DP)*aux
fdown = (0.d0,1.d0)*CMPLX(SIN(0.5d0*(alpha+pi)), KIND=DP)*aux
!
! second, rotation with angle gamma around (OZ)
!
wfcatom(ig,1,n_starting_wfc+2*l+1) = (CMPLX(COS(0.5d0*gamman), KIND=DP) &
+(0.d0,1.d0)*CMPLX(SIN(0.5d0 *gamman), KIND=DP))*fup
wfcatom(ig,2,n_starting_wfc+2*l+1) = (CMPLX(COS(0.5d0*gamman), KIND=DP) &
-(0.d0,1.d0)*CMPLX(SIN(0.5d0*gamman), KIND=DP))*fdown
END DO
END DO
!
n_starting_wfc = n_starting_wfc + 2*l+1
!
END SUBROUTINE atomic_wfc_so_mag
!
!
SUBROUTINE atomic_wfc_nc( npw, npwx, npol, natomwfc, nsp, nt, &
nb, angle1, angle2, lmax_wfc, ylm, chiq, sk, &
n_starting_wfc, wfcatom )
!
!! noncolinear case, magnetization along "angle1" and "angle2"
!
USE kinds, ONLY : DP
USE constants, ONLY : pi
USE uspp_param, ONLY : upf, nwfcm
!
IMPLICIT NONE
INTEGER, INTENT(IN) :: nsp, nt, nb, natomwfc, npw, npwx, npol, lmax_wfc
REAL(DP), INTENT(IN) :: chiq(npw,nwfcm,nsp)
REAL(DP), INTENT(IN) :: ylm(npw,(lmax_wfc+1)**2)
COMPLEX(DP), INTENT(IN) :: sk(npw)
REAL(DP), INTENT(IN) :: angle1(*)
!! angle theta of initial spin direction
REAL(DP), INTENT(IN) :: angle2(*)
!! angle phi of initial spin direction
INTEGER, INTENT(INOUT) :: n_starting_wfc
COMPLEX(DP), INTENT(INOUT) :: wfcatom(npwx,npol,natomwfc)
!
REAL(DP) :: alpha, gamman
COMPLEX(DP) :: fup, fdown, aux, lphase
INTEGER :: m, lm, ig, l
!
l = upf(nt)%lchi(nb)
lphase = (0.d0,1.d0)**l
alpha = angle1(nt)
gamman = - angle2(nt) + 0.5d0*pi
!
DO m = 1, 2*l+1
lm = l**2 + m
n_starting_wfc = n_starting_wfc + 1
IF ( n_starting_wfc + 2*l+1 > natomwfc) CALL errore &
('atomic_wfc_nc', 'internal error: too many wfcs', 1)
!$acc parallel loop
DO ig = 1, npw
aux = sk(ig)*CMPLX(ylm(ig,lm)*chiq(ig,nb,nt), KIND=DP)
!
! now, rotate wfc as needed
! first : rotation with angle alpha around (OX)
!
fup = CMPLX(COS(0.5d0*alpha), KIND=DP)*aux
fdown = (0.d0,1.d0)*CMPLX(SIN(0.5d0*alpha), KIND=DP)*aux
!
! Now, build the orthogonal wfc
! first rotation with angle (alpha+pi) around (OX)
!
wfcatom(ig,1,n_starting_wfc) = (CMPLX(COS(0.5d0*gamman), KIND=DP) &
+(0.d0,1.d0)*CMPLX(SIN(0.5d0*gamman), KIND=DP))*fup
wfcatom(ig,2,n_starting_wfc) = (CMPLX(COS(0.5d0*gamman), KIND=DP) &
-(0.d0,1.d0)*CMPLX(SIN(0.5d0*gamman), KIND=DP))*fdown
!
! second: rotation with angle gamma around (OZ)
!
! Now, build the orthogonal wfc
! first rotation with angle (alpha+pi) around (OX)
!
fup = CMPLX(COS(0.5d0*(alpha+pi)), KIND=DP)*aux
fdown = (0.d0,1.d0)*CMPLX(SIN(0.5d0*(alpha+pi)), KIND=DP)*aux
!
! second, rotation with angle gamma around (OZ)
!
wfcatom(ig,1,n_starting_wfc+2*l+1) = (CMPLX(COS(0.5d0*gamman), KIND=DP) &
+(0.d0,1.d0)*CMPLX(SIN(0.5d0*gamman), KIND=DP))*fup
wfcatom(ig,2,n_starting_wfc+2*l+1) = (CMPLX(COS(0.5d0*gamman), KIND=DP) &
-(0.d0,1.d0)*CMPLX(SIN(0.5d0*gamman), KIND=DP))*fdown
END DO
END DO
n_starting_wfc = n_starting_wfc + 2*l+1
!
END SUBROUTINE atomic_wfc_nc
!
!
SUBROUTINE atomic_wfc_lsda( npw, npwx, npol, natomwfc, nsp, nt, &
nb, lmax_wfc, ylm, chiq, sk, n_starting_wfc, wfcatom )
!
!! LSDA or nonmagnetic case
!
USE kinds, ONLY : DP
USE uspp_param, ONLY : upf, nwfcm
!
IMPLICIT NONE
INTEGER, INTENT(IN) :: nsp, nt, nb, natomwfc, npw, npwx, npol, lmax_wfc
REAL(DP), INTENT(IN) :: chiq(npw,nwfcm,nsp)
REAL(DP), INTENT(IN) :: ylm(npw,(lmax_wfc+1)**2)
COMPLEX(DP), INTENT(IN) :: sk(npw)
INTEGER, INTENT(INOUT) :: n_starting_wfc
COMPLEX(DP), INTENT(INOUT) :: wfcatom(npwx,npol,natomwfc)
!
COMPLEX(DP) :: lphase
INTEGER :: m, lm, ig, l
!
l = upf(nt)%lchi(nb)
lphase = (0.d0,1.d0)**l
DO m = 1, 2 * l + 1
lm = l**2 + m
n_starting_wfc = n_starting_wfc + 1
IF ( n_starting_wfc > natomwfc) CALL errore &
('atomic_wfc_lsda', 'internal error: too many wfcs', 1)
!
!$acc parallel loop
DO ig = 1, npw
wfcatom(ig,1,n_starting_wfc) = lphase * &
sk(ig) * CMPLX(ylm(ig,lm) * chiq(ig,nb,nt), KIND=DP)
ENDDO
!
END DO
!
END SUBROUTINE atomic_wfc_lsda

View File

@ -404,7 +404,7 @@ MODULE input_parameters
REAL(DP) :: starting_magnetization( nsx ) = 0.0_DP
!! PW ONLY
!!!PARAMETERS FOR TWO-CHEM-CALCULATIONS
! PARAMETERS FOR TWO-CHEM-CALCULATIONS
REAL(DP) :: degauss_cond = 0.0_DP
!broadening for conduction band
INTEGER :: nbnd_cond = 0

View File

@ -25,7 +25,7 @@ subroutine plot_io (filplot, title, nr1x, nr2x, nr3x, nr1, nr2, &
! plot_num, ityp (nat), iflag, i
integer :: nr1x, nr2x, nr3x, nr1, nr2, nr3, nat, ntyp, ibrav, &
plot_num, ityp (*), iflag, i
character (len=3) :: atm(*)
character (len=*) :: atm(*)
! real(DP) :: celldm (6), gcutm, dual, ecut, zv (ntyp), tau (3, nat) &
! , plot (nr1x * nr2x * nr3x), at(3,3)
real(DP) :: celldm (6), gcutm, dual, ecut, zv (*), tau (3, *) &

View File

@ -38,7 +38,7 @@ SUBROUTINE plot_rism(filplot, title, nsite, nr1x, nr2x, nr3x, nr1, nr2, nr3, &
REAL(DP), INTENT(INOUT) :: gcutm
LOGICAL, INTENT(INOUT) :: laue
CHARACTER(LEN=12), INTENT(INOUT) :: asite(1:*)
CHARACTER(LEN=3), INTENT(INOUT) :: atm(1:*)
CHARACTER(LEN=*), INTENT(INOUT) :: atm(1:*)
INTEGER, INTENT(INOUT) :: ityp(1:*)
REAL(DP), INTENT(INOUT) :: zv(1:*)
REAL(DP), INTENT(INOUT) :: tau(3, 1:*)

View File

@ -433,7 +433,7 @@ END SUBROUTINE qmmm_minimum_image
CALL mpi_send(tmp_buf,3*nat_qm,MPI_DOUBLE_PRECISION, 0,QMMM_TAG_FORCE,qmmm_comm,ierr)
!
!!!! Note, not used if ec_alg is false. Optimize excluding this send as well
! Note, not used if ec_alg is false. Optimize excluding this send as well
force_mm = force_mm * QMMM_FORCE_CONV
CALL mpi_send(force_mm,3*nat_mm,MPI_DOUBLE_PRECISION, 0,QMMM_TAG_FORCE2,qmmm_comm,ierr)
END IF

View File

@ -2620,9 +2620,9 @@ CONTAINS
CALL errore( 'card_hubbard', 'Too many occurrences of V for the same couple of atoms', i)
ENDIF
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Read the data for the first atom !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!**********************************************************************************!
!* Read the data for the first atom *!
!**********************************************************************************!
!
! Column 3: Read the atomic type name and the Hubbard manifold (e.g. Fe-3d)
CALL get_field(2, field_str, input_line)
@ -2756,9 +2756,9 @@ CONTAINS
ENDIF
ENDIF
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Read the data for the second atom !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!**********************************************************************************!
!* Read the data for the second atom *!
!**********************************************************************************!
!
! Column 3: Read the atomic type name and the Hubbard manifold (e.g. O-2p)
CALL get_field(3, field_str, input_line)

View File

@ -278,6 +278,7 @@ SUBROUTINE upf_bcast(upf, ionode, ionode_id, comm)
!! ID of the processor that broadcasts
INTEGER, INTENT(in) :: comm
!! MPI communicator
INTEGER :: nbeta
!
CALL mp_bcast (upf%nv, ionode_id, comm )
CALL mp_bcast (upf%generated, ionode_id, comm )
@ -330,26 +331,21 @@ SUBROUTINE upf_bcast(upf, ionode, ionode_id, comm)
ENDIF
!
IF ( .not. ionode) THEN
! next instructions prevents trouble in following broadcasts
nbeta = MAX (1, upf%nbeta)
ALLOCATE( upf%kbeta(nbeta), &
upf%lll(nbeta), &
upf%beta(upf%mesh, nbeta), &
upf%dion(nbeta, nbeta), &
upf%rcut(nbeta), &
upf%rcutus(nbeta), &
upf%els_beta(nbeta) )
! not sure next instructions are needed
IF ( upf%nbeta == 0) THEN
upf%nqf = 0
upf%nqlc= 0
upf%qqq_eps= -1._dp
upf%kkbeta = 0
ALLOCATE( upf%kbeta(1), &
upf%lll(1), &
upf%beta(upf%mesh,1), &
upf%dion(1,1), &
upf%rcut(1), &
upf%rcutus(1), &
upf%els_beta(1) )
ELSE
ALLOCATE( upf%kbeta(upf%nbeta), &
upf%lll(upf%nbeta), &
upf%beta(upf%mesh, upf%nbeta), &
upf%dion(upf%nbeta, upf%nbeta),&
upf%rcut(upf%nbeta), &
upf%rcutus(upf%nbeta), &
upf%els_beta(upf%nbeta) )
END IF
END IF
!

View File

@ -74,7 +74,6 @@
!! Set local and global dimensions, allocate arrays
!
USE mp, ONLY: mp_max, mp_sum
USE control_flags, ONLY : use_gpu
IMPLICIT NONE
INTEGER, INTENT(IN) :: ngm_
INTEGER, INTENT(IN) :: comm
@ -109,7 +108,6 @@
SUBROUTINE deallocate_gvect(vc)
!! Deallocate G-vector related arrays.
!
USE control_flags, ONLY : use_gpu
IMPLICIT NONE
!
LOGICAL, OPTIONAL, INTENT(IN) :: vc
@ -183,7 +181,6 @@
!
USE kinds, ONLY : DP
USE constants, ONLY : eps8
USE control_flags, ONLY : use_gpu
!
IMPLICIT NONE
!

View File

@ -108,434 +108,3 @@
END MODULE wavefunctions
!=----------------------------------------------------------------------------=!
module atomic_wfc_init
implicit none
contains
SUBROUTINE atomic_wfc_nog(ik, wfcatom, omega, tpiba, nat, ntyp, ityp, tau, natomwfc, &
mill, eigts1_, eigts2_, eigts3_, g, xk, igk_k, ngk, npwx, &
upf, nwfcm, noncolin, domag, npol, angle1, angle2, starting_spin_angle, &
rot_ylm)
USE kinds, ONLY : DP
USE pseudo_types, ONLY : pseudo_upf ! type
USE constants, ONLY : tpi, fpi, pi ! parameter
USE upf_spinorb, ONLY : lmaxx ! parameter
implicit none
! old global variables
REAL(DP), INTENT(IN) :: omega, tpiba, tau(:,:), g(:,:), xk(:,:), angle1(:), angle2(:)
integer, intent(IN) :: nat, ntyp, ityp(:), natomwfc, mill(:,:), igk_k(:,:), ngk(:), &
npwx, nwfcm, npol
complex(DP), intent(in),target, contiguous :: eigts1_(:,:), eigts2_(:,:), eigts3_(:,:)
complex(dp), intent(in) :: rot_ylm(:,:)
complex(dp), pointer :: eigts1(:,:), eigts2(:,:), eigts3(:,:)
type(pseudo_upf), intent(in) :: upf(:)
logical, intent(in) :: noncolin, domag, starting_spin_angle
INTEGER, INTENT(IN) :: ik
!! k-point index
COMPLEX(DP), INTENT(INOUT) :: wfcatom( npwx, npol, natomwfc )
!! Superposition of atomic wavefunctions
!
! ... local variables
!
INTEGER :: eigts_shape(2)
INTEGER :: n_starting_wfc, lmax_wfc, nt, l, nb, na, m, lm, ig, iig, &
i0, i1, i2, i3, npw
REAL(DP), ALLOCATABLE :: qg(:), ylm (:,:), chiq (:,:,:), gk (:,:)
COMPLEX(DP), ALLOCATABLE :: sk (:), aux(:)
COMPLEX(DP) :: kphase, lphase
REAL(DP) :: arg
CALL start_clock( 'atomic_wfc' )
!Fortran has problems to transmit the information about array's bounds. Here we use a pointer to walk around the issue
eigts_shape = shape(eigts1_)
eigts1(-eigts_shape(1)/2:eigts_shape(1)/2,1:eigts_shape(2) )=>eigts1_
eigts_shape = shape(eigts2_)
eigts2(-eigts_shape(1)/2:eigts_shape(1)/2,1:eigts_shape(2) )=>eigts2_
eigts_shape = shape(eigts3_)
eigts3(-eigts_shape(1)/2:eigts_shape(1)/2,1:eigts_shape(2) )=>eigts3_
! calculate max angular momentum required in wavefunctions
lmax_wfc = 0
DO nt = 1, ntyp
lmax_wfc = MAX( lmax_wfc, MAXVAL( upf(nt)%lchi(1:upf(nt)%nwfc) ) )
END DO
!
npw = ngk(ik)
!
ALLOCATE( ylm (npw,(lmax_wfc+1)**2), chiq(npw,nwfcm,ntyp), &
gk(3,npw), qg(npw) )
!
DO ig = 1, npw
iig = igk_k (ig,ik)
gk (1,ig) = xk(1, ik) + g(1,iig)
gk (2,ig) = xk(2, ik) + g(2,iig)
gk (3,ig) = xk(3, ik) + g(3,iig)
qg(ig) = gk(1, ig)**2 + gk(2, ig)**2 + gk(3, ig)**2
END DO
!
! ylm = spherical harmonics
!
CALL ylmr2( (lmax_wfc+1)**2, npw, gk, qg, ylm )
!
! set now q=|k+G| in atomic units
!
DO ig = 1, npw
qg(ig) = SQRT( qg(ig) )*tpiba
END DO
!
CALL interp_atwfc ( npw, qg, nwfcm, chiq )
!
DEALLOCATE( qg, gk )
ALLOCATE( aux(npw), sk(npw) )
!
wfcatom(:,:,:) = (0.0_dp, 0.0_dp)
n_starting_wfc = 0
!
DO na = 1, nat
arg = (xk(1,ik)*tau(1,na) + xk(2,ik)*tau(2,na) + xk(3,ik)*tau(3,na)) * tpi
kphase = CMPLX( COS(arg), - SIN(arg) ,KIND=DP)
!
! sk is the structure factor
!
DO ig = 1, npw
iig = igk_k (ig,ik)
sk (ig) = kphase * eigts1 (mill (1,iig), na) * &
eigts2 (mill (2,iig), na) * &
eigts3 (mill (3,iig), na)
END DO
!
nt = ityp (na)
DO nb = 1, upf(nt)%nwfc
IF ( upf(nt)%oc(nb) >= 0.d0 ) THEN
l = upf(nt)%lchi(nb)
lphase = (0.d0,1.d0)**l
!
! the factor i^l MUST BE PRESENT in order to produce
! wavefunctions for k=0 that are real in real space
!
IF ( noncolin ) THEN
!
IF ( upf(nt)%has_so ) THEN
!
IF (starting_spin_angle.OR..NOT.domag) THEN
CALL atomic_wfc_so( )
ELSE
CALL atomic_wfc_so_mag( )
END IF
!
ELSE
!
CALL atomic_wfc_nc( )
!
END IF
!
ELSE
!
CALL atomic_wfc___( )
!
END IF
!
END IF
!
END DO
!
END DO
IF ( n_starting_wfc /= natomwfc) call errore ('atomic_wfc', &
'internal error: some wfcs were lost ', 1 )
DEALLOCATE( aux, sk, chiq, ylm )
CALL stop_clock( 'atomic_wfc' )
RETURN
CONTAINS
!----------------------------------------------------------------
SUBROUTINE atomic_wfc_so( )
!------------------------------------------------------------
!! Spin-orbit case.
!
implicit none
REAL(DP) :: fact(2), j
REAL(DP), EXTERNAL :: spinor
INTEGER :: ind, ind1, n1, is, sph_ind
!
j = upf(nt)%jchi(nb)
DO m = -l-1, l
fact(1) = spinor(l,j,m,1)
fact(2) = spinor(l,j,m,2)
IF ( ABS(fact(1)) > 1.d-8 .OR. ABS(fact(2)) > 1.d-8 ) THEN
n_starting_wfc = n_starting_wfc + 1
IF (n_starting_wfc > natomwfc) CALL errore &
('atomic_wfc_so', 'internal error: too many wfcs', 1)
DO is=1,2
IF (abs(fact(is)) > 1.d-8) THEN
ind=lmaxx+1+sph_ind(l,j,m,is)
aux=(0.d0,0.d0)
DO n1=1,2*l+1
ind1=l**2+n1
if (abs(rot_ylm(ind,n1)) > 1.d-8) &
aux(:)=aux(:)+rot_ylm(ind,n1)*ylm(:,ind1)
ENDDO
do ig = 1, npw
wfcatom(ig,is,n_starting_wfc) = lphase*fact(is)*&
sk(ig)*aux(ig)*chiq (ig, nb, nt)
END DO
ELSE
wfcatom(:,is,n_starting_wfc) = (0.d0,0.d0)
END IF
END DO
END IF
END DO
!
END SUBROUTINE atomic_wfc_so
!
SUBROUTINE atomic_wfc_so_mag( )
!
!! Spin-orbit case, magnetization along "angle1" and "angle2"
!! In the magnetic case we always assume that magnetism is much larger
!! than spin-orbit and average the wavefunctions at l+1/2 and l-1/2
!! filling then the up and down spinors with the average wavefunctions,
!! according to the direction of the magnetization, following what is
!! done in the noncollinear case.
!
implicit none
REAL(DP) :: alpha, gamman, j
COMPLEX(DP) :: fup, fdown
REAL(DP), ALLOCATABLE :: chiaux(:)
INTEGER :: nc, ib
!
j = upf(nt)%jchi(nb)
!
! This routine creates two functions only in the case j=l+1/2 or exit in the
! other case
!
IF (ABS(j-l+0.5_DP)<1.d-4) RETURN
ALLOCATE(chiaux(npw))
!
! Find the functions j=l-1/2
!
IF (l == 0) THEN
chiaux(:)=chiq(:,nb,nt)
ELSE
DO ib=1, upf(nt)%nwfc
IF ((upf(nt)%lchi(ib) == l).AND. &
(ABS(upf(nt)%jchi(ib)-l+0.5_DP)<1.d-4)) THEN
nc=ib
EXIT
ENDIF
ENDDO
!
! Average the two functions
!
chiaux(:)=(chiq(:,nb,nt)*(l+1.0_DP)+chiq(:,nc,nt)*l)/(2.0_DP*l+1.0_DP)
!
ENDIF
!
! and construct the starting wavefunctions as in the noncollinear case.
!
alpha = angle1(nt)
gamman = - angle2(nt) + 0.5d0*pi
!
DO m = 1, 2 * l + 1
lm = l**2 + m
n_starting_wfc = n_starting_wfc + 1
IF ( n_starting_wfc + 2*l+1 > natomwfc ) CALL errore &
('atomic_wfc_so_mag', 'internal error: too many wfcs', 1)
DO ig = 1, npw
aux(ig) = sk(ig)*ylm(ig,lm)*chiaux(ig)
END DO
!
! now, rotate wfc as needed
! first : rotation with angle alpha around (OX)
!
DO ig = 1, npw
fup = cos(0.5d0*alpha)*aux(ig)
fdown = (0.d0,1.d0)*sin(0.5d0*alpha)*aux(ig)
!
! Now, build the orthogonal wfc
! first rotation with angle (alpha+pi) around (OX)
!
wfcatom(ig,1,n_starting_wfc) = (cos(0.5d0*gamman) &
+(0.d0,1.d0)*sin(0.5d0*gamman))*fup
wfcatom(ig,2,n_starting_wfc) = (cos(0.5d0*gamman) &
-(0.d0,1.d0)*sin(0.5d0*gamman))*fdown
!
! second: rotation with angle gamma around (OZ)
!
! Now, build the orthogonal wfc
! first rotation with angle (alpha+pi) around (OX)
!
fup = cos(0.5d0*(alpha+pi))*aux(ig)
fdown = (0.d0,1.d0)*sin(0.5d0*(alpha+pi))*aux(ig)
!
! second, rotation with angle gamma around (OZ)
!
wfcatom(ig,1,n_starting_wfc+2*l+1) = (cos(0.5d0*gamman) &
+(0.d0,1.d0)*sin(0.5d0 *gamman))*fup
wfcatom(ig,2,n_starting_wfc+2*l+1) = (cos(0.5d0*gamman) &
-(0.d0,1.d0)*sin(0.5d0*gamman))*fdown
END DO
END DO
n_starting_wfc = n_starting_wfc + 2*l+1
DEALLOCATE( chiaux )
!
END SUBROUTINE atomic_wfc_so_mag
!
SUBROUTINE atomic_wfc_nc( )
!
!! noncolinear case, magnetization along "angle1" and "angle2"
!
implicit none
REAL(DP) :: alpha, gamman
COMPLEX(DP) :: fup, fdown
!
alpha = angle1(nt)
gamman = - angle2(nt) + 0.5d0*pi
!
DO m = 1, 2 * l + 1
lm = l**2 + m
n_starting_wfc = n_starting_wfc + 1
IF ( n_starting_wfc + 2*l+1 > natomwfc) CALL errore &
('atomic_wfc_nc', 'internal error: too many wfcs', 1)
DO ig = 1, npw
aux(ig) = sk(ig)*ylm(ig,lm)*chiq(ig,nb,nt)
END DO
!
! now, rotate wfc as needed
! first : rotation with angle alpha around (OX)
!
DO ig = 1, npw
fup = cos(0.5d0*alpha)*aux(ig)
fdown = (0.d0,1.d0)*sin(0.5d0*alpha)*aux(ig)
!
! Now, build the orthogonal wfc
! first rotation with angle (alpha+pi) around (OX)
!
wfcatom(ig,1,n_starting_wfc) = (cos(0.5d0*gamman) &
+(0.d0,1.d0)*sin(0.5d0*gamman))*fup
wfcatom(ig,2,n_starting_wfc) = (cos(0.5d0*gamman) &
-(0.d0,1.d0)*sin(0.5d0*gamman))*fdown
!
! second: rotation with angle gamma around (OZ)
!
! Now, build the orthogonal wfc
! first rotation with angle (alpha+pi) around (OX)
!
fup = cos(0.5d0*(alpha+pi))*aux(ig)
fdown = (0.d0,1.d0)*sin(0.5d0*(alpha+pi))*aux(ig)
!
! second, rotation with angle gamma around (OZ)
!
wfcatom(ig,1,n_starting_wfc+2*l+1) = (cos(0.5d0*gamman) &
+(0.d0,1.d0)*sin(0.5d0 *gamman))*fup
wfcatom(ig,2,n_starting_wfc+2*l+1) = (cos(0.5d0*gamman) &
-(0.d0,1.d0)*sin(0.5d0*gamman))*fdown
END DO
END DO
n_starting_wfc = n_starting_wfc + 2*l+1
!
END SUBROUTINE atomic_wfc_nc
SUBROUTINE atomic_wfc___( )
!
! ... LSDA or nonmagnetic case
!
implicit none
DO m = 1, 2 * l + 1
lm = l**2 + m
n_starting_wfc = n_starting_wfc + 1
IF ( n_starting_wfc > natomwfc) CALL errore &
('atomic_wfc___', 'internal error: too many wfcs', 1)
!
DO ig = 1, npw
wfcatom (ig, 1, n_starting_wfc) = lphase * &
sk (ig) * ylm (ig, lm) * chiq (ig, nb, nt)
ENDDO
!
END DO
!
END SUBROUTINE atomic_wfc___
!
END SUBROUTINE atomic_wfc_nog
SUBROUTINE atomic_wfc_cp(evc, omega, tpiba, nat, ntyp, ityp, tau, natomwfc, &
mill, eigts1, eigts2, eigts3, g, iupdwn, &
npwx, &
upf, nwfcm, npol )
USE kinds, ONLY : DP
USE pseudo_types, ONLY : pseudo_upf
USE mp_global, ONLY : intra_bgrp_comm
use uspp_data, ONLY : nqx, tab_at, dq
use uspp_param, ONLY : nsp
USE gvecw, ONLY : ecutwfc
implicit none
! old global variables
REAL(DP), INTENT(IN) :: omega, tpiba, tau(:,:), g(:,:)
integer, intent(IN) :: nat, ntyp, ityp(:), natomwfc, mill(:,:), &
npwx, nwfcm, npol, iupdwn(2)
complex(DP), intent(in) :: eigts1(:,:), eigts2(:,:), eigts3(:,:)
type(pseudo_upf), intent(in) :: upf(:)
COMPLEX(DP), intent(inout) :: evc (:,:)
COMPLEX(DP) :: wfcatom( npwx, npol, natomwfc )
!! Superposition of atomic wavefunctions
!cp specific settings (gamma only)
! xk is 0,0,0, igk_k is the identical permutation, and ngk is 1
! wfcatom has 2 dimensions (npwx, nbnd*nspin)
! looks like only nspin=1,2 are implemented. The layout of the wfc is different:
! in cp it is the equivalent of (npwx, nbnd, nspin ), while in pw is (npwx, nspin, nbnd)
real(dp) :: xk(3,1)
integer :: ngk(1), igk_k(npwx,1), i, ik, ipol, sh(2)
complex(dp), allocatable :: rot_ylm(:,:)
REAL(DP), allocatable :: angle1(:), angle2(:)
!! dummy, unused and not allocated variables
! identity permutation
do i=1,npwx
igk_k(i,1)=i
enddo
! gamma point only
xk=0.d0
ngk(1) = npwx
ik=1
nqx = INT( (SQRT(ecutwfc) / dq + 4) * 1.d0 )
allocate(tab_at(nqx,nwfcm,nsp))
call init_tab_atwfc(omega, intra_bgrp_comm)
! only nospin / LSDA in CP
call atomic_wfc_nog(ik, wfcatom, omega, tpiba, nat, ntyp, ityp, tau, natomwfc, &
mill, eigts1, eigts2, eigts3, g, xk, igk_k, ngk, npwx, &
upf, nwfcm, .false., .false., npol, angle1, angle2, .false., &
rot_ylm)
sh = shape(evc)
!write the result in the correct order in evc
do i=1,min(natomwfc,sh(2)/npol)
do ipol = 1, npol
evc(:,i + iupdwn(ipol)-1) = wfcatom(:,ipol,i)
enddo
enddo
deallocate (tab_at)
end subroutine atomic_wfc_cp
end module atomic_wfc_init

View File

@ -17,7 +17,7 @@ SUBROUTINE xsf_struct (alat, at, nat, tau, atm, ityp, ounit)
USE constants, ONLY : BOHR_RADIUS_ANGS
IMPLICIT NONE
INTEGER :: nat, ityp (nat), ounit
CHARACTER(len=3) :: atm(*)
CHARACTER(len=*) :: atm(*)
real(DP) :: alat, tau (3, nat), at (3, 3)
! --
INTEGER :: i, j, n

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:
neb.x / NEB / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3)</span>
neb.x / NEB / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: neb.x / NEB / Quantum ESPRESSO (version: 7.3)
Program: neb.x / NEB / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------

View File

@ -1,5 +1,5 @@
\documentclass[12pt,a4paper]{article}
\def\version{7.3}
\def\version{7.3.1}
\def\qe{{\sc Quantum ESPRESSO}}
\def\NEB{\texttt{PWneb}} % to be decided
\usepackage{html}

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:
dynmat.x / PHonon / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.2)</span>
dynmat.x / PHonon / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">
@ -376,7 +376,7 @@ coupling calculation.
</td></tr>
</table>
<small>
This file has been created by helpdoc utility on Sat Mar 18 19:08:11 CET 2023.
This file has been created by helpdoc utility on Wed Feb 21 14:33:44 CET 2024.
</small>
</body>
</html>

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: dynmat.x / PHonon / Quantum ESPRESSO (version: 7.2)
Program: dynmat.x / PHonon / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------
@ -202,4 +202,4 @@ NAMELIST: &INPUT
===END OF NAMELIST======================================================
This file has been created by helpdoc utility on Sat Mar 18 19:08:11 CET 2023
This file has been created by helpdoc utility on Wed Feb 21 14:33:44 CET 2024

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:
matdyn.x / PHonon / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.2)</span>
matdyn.x / PHonon / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">
@ -765,7 +765,7 @@ if you want to have q = 0 results for two different directions
</td></tr>
</table>
<small>
This file has been created by helpdoc utility on Sat Mar 18 19:08:12 CET 2023.
This file has been created by helpdoc utility on Wed Feb 21 14:33:45 CET 2024.
</small>
</body>
</html>

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: matdyn.x / PHonon / Quantum ESPRESSO (version: 7.2)
Program: matdyn.x / PHonon / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------
@ -502,4 +502,4 @@ ________________________________________________________________________
if you want to have q = 0 results for two different directions
This file has been created by helpdoc utility on Sat Mar 18 19:08:12 CET 2023
This file has been created by helpdoc utility on Wed Feb 21 14:33:45 CET 2024

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 / PHonon / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3)</span>
ph.x / PHonon / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: ph.x / PHonon / Quantum ESPRESSO (version: 7.3)
Program: ph.x / PHonon / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------

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:
postahc.x / PHonon / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.2)</span>
postahc.x / PHonon / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">
@ -308,7 +308,7 @@ If .false., ahc_dw.bin file must be present in <a href="#ahc_dir">ahc_dir</a>.
</td></tr>
</table>
<small>
This file has been created by helpdoc utility on Sat Mar 18 19:08:12 CET 2023.
This file has been created by helpdoc utility on Wed Feb 21 14:33:44 CET 2024.
</small>
</body>
</html>

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: postahc.x / PHonon / Quantum ESPRESSO (version: 7.2)
Program: postahc.x / PHonon / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------
@ -150,4 +150,4 @@ NAMELIST: &INPUT
===END OF NAMELIST======================================================
This file has been created by helpdoc utility on Sat Mar 18 19:08:12 CET 2023
This file has been created by helpdoc utility on Wed Feb 21 14:33:44 CET 2024

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:
q2r.x / PHonon / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.2)</span>
q2r.x / PHonon / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">
@ -323,7 +323,7 @@ long as <b>q=0 is the first</b>.
</td></tr>
</table>
<small>
This file has been created by helpdoc utility on Sat Mar 18 19:08:13 CET 2023.
This file has been created by helpdoc utility on Wed Feb 21 14:33:44 CET 2024.
</small>
</body>
</html>

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: q2r.x / PHonon / Quantum ESPRESSO (version: 7.2)
Program: q2r.x / PHonon / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------
@ -194,4 +194,4 @@ ________________________________________________________________________
ENDIF
________________________________________________________________________
This file has been created by helpdoc utility on Sat Mar 18 19:08:13 CET 2023
This file has been created by helpdoc utility on Wed Feb 21 14:33:44 CET 2024

View File

@ -1,5 +1,5 @@
\documentclass[12pt,a4paper]{article}
\def\version{7.3}
\def\version{7.3.1}
\def\qe{{\sc Quantum ESPRESSO}}
\usepackage{html}

View File

@ -19,7 +19,7 @@ subroutine addusddens (drhoscf, dbecsum, mode0, npe, iflag)
!! from solve_* (iflag=0) drhoscf and dbecsum contain the contribution
!! of the solution of the linear system and the terms due to alphasum
!! and becsum are not added. In this case the change of the charge
!! calculated by drho (called \Delta \rho in [1]) is read from file
!! calculated by drho (called \(\Delta \rho\) in [1]) is read from file
!! and added. The contribution of the change of
!! the Fermi energy is not calculated here but added later by ef_shift.
!! [1] PRB 64, 235118 (2001).

View File

@ -209,7 +209,7 @@ SUBROUTINE compute_a2F()
USE wvfct, ONLY : et, nbnd
USE io_global, ONLY : stdout
USE cell_base, ONLY : at, bg
USE klist, ONLY : nkstot
USE klist, ONLY : nkstot, nks
USE disp, ONLY : nq1, nq2, nq3, nqs, x_q
USE symm_base, ONLY : nsym, s, time_reversal, t_rev
USE lsda_mod, ONLY : nspin
@ -254,6 +254,7 @@ SUBROUTINE compute_a2F()
nspin = 1
nbnd = nmodes
nkstot = nqs
nks = nqs
CALL opt_tetra_partialdos(1, kresolveddos, nfreq, nat + 1, 1, &
& 0.0_dp, DeltaE, proj, pdos, dos, 1)
!
@ -376,6 +377,7 @@ PROGRAM alpha2f
USE io_global, ONLY : qestdin, ionode
USE modes, ONLY : nmodes
USE ions_base, ONLY : nat
USE mp_world, ONLY : nproc
!
USE alpha2f_vals, ONLY : nfreq
USE alpha2f_routines, ONLY : read_lam, compute_a2f, compute_lambda, read_polarization
@ -387,9 +389,10 @@ PROGRAM alpha2f
!
NAMELIST /INPUTA2F/ nfreq
!
#if defined(__MPI)
CALL mp_startup()
#endif
!
IF ( nproc > 1 ) CALL errore('alpha2f','Number of processes > 1 is not supported.', nproc)
!
CALL environment_start('ALPHA2F')
in_alpha2f = .TRUE.
!
@ -412,8 +415,6 @@ PROGRAM alpha2f
END IF
!
CALL environment_end('ALPHA2F')
#if defined(__MPI)
CALL mp_global_end()
#endif
!
END PROGRAM alpha2f

View File

@ -91,11 +91,12 @@ SUBROUTINE read_dyn_from_file( nqs, xq, epsil, lrigid, &
!----------------------------------------------------------------------------
!! Read dynamical matrix from file.
!
USE kinds, ONLY : DP
USE kinds, ONLY : DP
USE dynamicalq, ONLY: phiq, tau, ityp, zeu
USE io_global, ONLY : ionode, ionode_id, stdout
USE mp, ONLY : mp_bcast
USE io_global, ONLY : ionode, ionode_id, stdout
USE mp, ONLY : mp_bcast
USE mp_images, ONLY : intra_image_comm
USE ions_base, ONLY : ntypx
!
IMPLICIT NONE
!
@ -104,15 +105,15 @@ SUBROUTINE read_dyn_from_file( nqs, xq, epsil, lrigid, &
LOGICAL :: lrigid
INTEGER :: nqs, ntyp, nat, ibrav
REAL(DP) :: epsil(3,3)
REAL(DP) :: xq(3,48), celldm(6), at(3,3), amass(ntyp)
CHARACTER(LEN=3) atm(ntyp)
REAL(DP) :: xq(3,48), celldm(6), at(3,3), amass(ntypx)
CHARACTER(LEN=6) atm(ntypx)
! local variables
INTEGER :: ntyp1,nat1,ibrav1,ityp1
INTEGER :: i, j, na, nb, nt, ios
REAL(DP) :: tau1(3), amass1, at1(3,3), celldm1(6), q2
REAL(DP) :: phir(3),phii(3)
CHARACTER(LEN=75) :: line
CHARACTER(LEN=3) :: atm1
CHARACTER(LEN=6) :: atm1
LOGICAL, SAVE :: first =.TRUE.
!
IF (ionode) THEN

View File

@ -939,7 +939,7 @@ SUBROUTINE phq_readin()
!
! end of reading, close unit qestdin, remove temporary input file if existing
! FIXME: closing input file here breaks alpha2F.x that reads what follows
!!! IF (meta_ionode) ios = close_input_file ()
! IF (meta_ionode) ios = close_input_file ()
IF (epsil.AND.(lgauss .OR. ltetra)) &
CALL errore ('phq_readin', 'no elec. field with metals', 1)

View File

@ -113,8 +113,6 @@ subroutine phq_setup
mu, nu, imode0, irr, ipert, na, it, nt, nsym_is, last_irr_eff
! counters
real(DP), allocatable :: wg_up(:,:), wg_dw(:,:)
logical :: sym (48), magnetic_sym
LOGICAL :: symmorphic_or_nzb
! the symmetry operations

View File

@ -55,7 +55,7 @@ PROGRAM Q2QSTAR
INTEGER :: ierr, nargs
!
INTEGER :: nqs, isq (48), imq, nqq
REAL(DP) :: sxq(3, 48), xq(3), xqs(3,48), epsil(3,3)
REAL(DP) :: sxq(3, 48), xq(3), xqs(3,48), epsilon(3,3)
!
LOGICAL :: sym(48), lrigid
LOGICAL, EXTERNAL :: has_xml
@ -99,7 +99,7 @@ PROGRAM Q2QSTAR
! read system information
CALL read_dyn_mat_header(ntyp, nat, ibrav, nspin_mag, &
celldm, at, bg, omega, atm, amass, tau, ityp, &
m_loc, nqs, lrigid, epsil, zeu )
m_loc, nqs, lrigid, epsilon, zeu )
! read dyn.mat.
CALL read_dyn_mat(nat,1,xq,phi)
! close file
@ -112,7 +112,7 @@ PROGRAM Q2QSTAR
IF (ierr /= 0) CALL errore(CODE,'file '//TRIM(fildyn)//' missing!',1)
! read everything, this use global variables
ntyp = ntypx
CALL read_dyn_from_file (nqs, xqs, epsil, lrigid, &
CALL read_dyn_from_file (nqs, xqs, epsilon, lrigid, &
ntyp, nat, ibrav, celldm, at, atm, amass)
!
IF (ionode) CLOSE(unit=1)
@ -218,6 +218,9 @@ PROGRAM Q2QSTAR
!
CALL q2qstar_ph (d2, at, bg, nat, nsym, s, invs, irt, rtau, &
nqs, sxq, isq, imq, 1)
IF (lrigid .and. .not. xmldyn ) call write_epsilon_and_zeu (zeu, epsilon, nat, 1)
ALLOCATE(w2(3*nat))
CALL dyndia (xq, 3*nat, nat, ntyp, ityp, amass, 1, d2, w2)

View File

@ -94,7 +94,7 @@ SUBROUTINE summarize_zeu()
ENDDO
WRITE( stdout, '(/,10x,"Effective charges (d Force / dE) in cartesian axis without acoustic sum rule applied (asr)",/)')
DO na = 1, nat
WRITE( stdout, '(10x," atom ",i6, a6,"Mean Z*:",f15.5)') na, atm(ityp(na)),zstarmean(na)
WRITE( stdout, '(10x," atom ",i4,2x,a6,"Mean Z*:",f15.5)') na, atm(ityp(na)),zstarmean(na)
WRITE( stdout, '(6x,"Ex (",3f15.5," )")') (zstareu (1, jpol, na), &
jpol = 1, 3)
WRITE( stdout, '(6x,"Ey (",3f15.5," )")') (zstareu (2, jpol, na), &
@ -110,7 +110,7 @@ SUBROUTINE summarize_zeu()
ENDDO
WRITE( stdout, '(/,10x,"Effective charges (d Force / dE) in cartesian axis with asr applied: ")')
DO na = 1, nat
WRITE( stdout, '(10x," atom ",i6, a6,"Mean Z*:",f15.5)') na, atm(ityp(na)),zstarmean(na)
WRITE( stdout, '(10x," atom ",i4,2x,a6,"Mean Z*:",f15.5)') na, atm(ityp(na)),zstarmean(na)
WRITE( stdout, '(6x,"E*x (",3f15.5," )")') (zstareu (1, jpol, na)- &
zstarsum(1, jpol)/nat, jpol = 1, 3)
WRITE( stdout, '(6x,"E*y (",3f15.5," )")') (zstareu (2, jpol, na)- &

View File

@ -340,6 +340,20 @@ target_link_libraries(qe_pp_epsilon_exe
qe_pp
qe_upflib)
###########################################################
# d3hess.x
###########################################################
set(src_d3hess_x src/d3hess.f90)
qe_add_executable(qe_pp_d3hess_exe ${src_d3hess_x})
set_target_properties(qe_pp_d3hess_exe PROPERTIES OUTPUT_NAME d3hess.x)
target_link_libraries(qe_pp_d3hess_exe
PRIVATE
qe_pw
qe_modules
qe_pp
qe_dftd3
qe_upflib)
###########################################################
# wannier_ham.x
###########################################################
@ -579,6 +593,7 @@ set(PP_EXE_TARGETS
qe_pp_pw2gt_exe
qe_pp_sumpdos_exe
qe_pp_epsilon_exe
qe_pp_d3hess_exe
qe_pp_wannierham_exe
qe_pp_wannierplot_exe
qe_pp_molecularpdos_exe

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:
bands.x / PWscf / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3)</span>
bands.x / PWscf / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: bands.x / PWscf / Quantum ESPRESSO (version: 7.3)
Program: bands.x / PWscf / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------

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:
band_interpolation.x / PWscf / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3)</span>
band_interpolation.x / PWscf / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: band_interpolation.x / PWscf / Quantum ESPRESSO (version: 7.3)
Program: band_interpolation.x / PWscf / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------

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:
d3hess.x / PWscf / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3)</span>
d3hess.x / PWscf / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">

View File

@ -3,7 +3,7 @@
------------------------------------------------------------------------
INPUT FILE DESCRIPTION
Program: d3hess.x / PWscf / Quantum ESPRESSO (version: 7.3)
Program: d3hess.x / PWscf / Quantum ESPRESSO (version: 7.3.1)
------------------------------------------------------------------------

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:
dos.x / PWscf / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3)</span>
dos.x / PWscf / Quantum ESPRESSO<span style="font-weight: normal;"> (version: 7.3.1)</span>
</h2>
</th></tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">

Some files were not shown because too many files have changed in this diff Show More