Commit 9274219f authored by Matthias Redies's avatar Matthias Redies

merge develop

parents cd870b4e a20c4793
...@@ -21,6 +21,7 @@ CONTAINS ...@@ -21,6 +21,7 @@ CONTAINS
SUBROUTINE eigen(mpi,stars,sphhar,atoms,obsolete,xcpot,sym,kpts,DIMENSION,vacuum,input,& SUBROUTINE eigen(mpi,stars,sphhar,atoms,obsolete,xcpot,sym,kpts,DIMENSION,vacuum,input,&
cell,enpara,banddos,noco,oneD,hybrid,iter,eig_id,results,inden,v,vx) cell,enpara,banddos,noco,oneD,hybrid,iter,eig_id,results,inden,v,vx)
#include"cpp_double.h"
USE m_constants, ONLY : pi_const,sfp_const USE m_constants, ONLY : pi_const,sfp_const
USE m_types USE m_types
USE m_apws USE m_apws
...@@ -60,7 +61,7 @@ CONTAINS ...@@ -60,7 +61,7 @@ CONTAINS
TYPE(t_sym),INTENT(IN) :: sym TYPE(t_sym),INTENT(IN) :: sym
TYPE(t_stars),INTENT(IN) :: stars TYPE(t_stars),INTENT(IN) :: stars
TYPE(t_cell),INTENT(IN) :: cell TYPE(t_cell),INTENT(IN) :: cell
TYPE(t_kpts),INTENT(IN) :: kpts TYPE(t_kpts),INTENT(INOUT) :: kpts
TYPE(t_sphhar),INTENT(IN) :: sphhar TYPE(t_sphhar),INTENT(IN) :: sphhar
TYPE(t_atoms),INTENT(IN) :: atoms TYPE(t_atoms),INTENT(IN) :: atoms
TYPE(t_potden),INTENT(IN) :: inden,vx TYPE(t_potden),INTENT(IN) :: inden,vx
...@@ -70,6 +71,8 @@ CONTAINS ...@@ -70,6 +71,8 @@ CONTAINS
INCLUDE 'mpif.h' INCLUDE 'mpif.h'
#endif #endif
! EXTERNAL MPI_BCAST !only used by band_unfolding to broadcast the gvec
! Scalar Arguments ! Scalar Arguments
INTEGER,INTENT(IN) :: iter INTEGER,INTENT(IN) :: iter
INTEGER,INTENT(IN) :: eig_id INTEGER,INTENT(IN) :: eig_id
...@@ -83,11 +86,16 @@ CONTAINS ...@@ -83,11 +86,16 @@ CONTAINS
! Local Arrays ! Local Arrays
INTEGER :: ierr(3) INTEGER :: ierr(3)
INTEGER :: neigBuffer(kpts%nkpt,input%jspins) INTEGER :: neigBuffer(kpts%nkpt,input%jspins)
COMPLEX :: unfoldingBuffer(SIZE(results%unfolding_weights,1),kpts%nkpt,input%jspins) ! needed for unfolding bandstructure mpi case
INTEGER, PARAMETER :: lmaxb = 3 INTEGER, PARAMETER :: lmaxb = 3
REAL, ALLOCATABLE :: bkpt(:) REAL, ALLOCATABLE :: bkpt(:)
REAL, ALLOCATABLE :: eig(:) REAL, ALLOCATABLE :: eig(:)
COMPLEX, ALLOCATABLE :: vs_mmp(:,:,:,:) COMPLEX, ALLOCATABLE :: vs_mmp(:,:,:,:)
INTEGER :: jsp_m, i_kpt_m, i_m
TYPE(t_tlmplm) :: td TYPE(t_tlmplm) :: td
TYPE(t_usdus) :: ud TYPE(t_usdus) :: ud
TYPE(t_lapw) :: lapw TYPE(t_lapw) :: lapw
...@@ -123,6 +131,7 @@ CONTAINS ...@@ -123,6 +131,7 @@ CONTAINS
neigBuffer = 0 neigBuffer = 0
results%neig = 0 results%neig = 0
results%eig = 1.0e300 results%eig = 1.0e300
unfoldingBuffer = CMPLX(0.0,0.0)
DO jsp = 1,MERGE(1,input%jspins,noco%l_noco) DO jsp = 1,MERGE(1,input%jspins,noco%l_noco)
k_loop:DO nk = mpi%n_start,kpts%nkpt,mpi%n_stride k_loop:DO nk = mpi%n_start,kpts%nkpt,mpi%n_stride
...@@ -137,14 +146,14 @@ CONTAINS ...@@ -137,14 +146,14 @@ CONTAINS
IF(hybrid%l_hybrid) THEN IF(hybrid%l_hybrid) THEN
DO i = 1, hmat%matsize1 DO i = 1, hmat%matsize1
DO j = 1, i DO j = 1, i
IF (hmat%l_real) THEN IF (hmat%l_real) THEN
IF ((i.LE.5).AND.(j.LE.5)) THEN IF ((i.LE.5).AND.(j.LE.5)) THEN
WRITE(1233,'(2i7,2f15.8)') i, j, hmat%data_r(i,j), hmat%data_r(j,i) WRITE(1233,'(2i7,2f15.8)') i, j, hmat%data_r(i,j), hmat%data_r(j,i)
END IF END IF
ELSE ELSE
ENDIF ENDIF
END DO END DO
END DO END DO
! Write overlap matrix smat to direct access file olap ! Write overlap matrix smat to direct access file olap
...@@ -218,7 +227,7 @@ CONTAINS ...@@ -218,7 +227,7 @@ CONTAINS
CALL timestop("EV output") CALL timestop("EV output")
IF (banddos%unfoldband) THEN IF (banddos%unfoldband) THEN
CALL calculate_plot_w_n(banddos,cell,kpts,smat_unfold,zMat,lapw,nk,jsp,eig,results,input,atoms) CALL calculate_plot_w_n(banddos,cell,kpts,smat_unfold,zMat,lapw,nk,jsp,eig,results,input,atoms,unfoldingBuffer,mpi)
DEALLOCATE(smat_unfold, stat=dealloc_stat, errmsg=errmsg) DEALLOCATE(smat_unfold, stat=dealloc_stat, errmsg=errmsg)
if(dealloc_stat /= 0) call juDFT_error("deallocate failed for smat_unfold",& if(dealloc_stat /= 0) call juDFT_error("deallocate failed for smat_unfold",&
hint=errmsg, calledby="eigen.F90") hint=errmsg, calledby="eigen.F90")
...@@ -228,10 +237,15 @@ CONTAINS ...@@ -228,10 +237,15 @@ CONTAINS
END DO ! spin loop ends END DO ! spin loop ends
#ifdef CPP_MPI #ifdef CPP_MPI
IF (banddos%unfoldband) THEN
results%unfolding_weights = CMPLX(0.0,0.0)
CALL MPI_ALLREDUCE(unfoldingBuffer,results%unfolding_weights,SIZE(results%unfolding_weights,1)*SIZE(results%unfolding_weights,2)*SIZE(results%unfolding_weights,3),CPP_MPI_COMPLEX,MPI_SUM,mpi%mpi_comm,ierr)
END IF
CALL MPI_ALLREDUCE(neigBuffer,results%neig,kpts%nkpt*input%jspins,MPI_INTEGER,MPI_SUM,mpi%sub_comm,ierr) CALL MPI_ALLREDUCE(neigBuffer,results%neig,kpts%nkpt*input%jspins,MPI_INTEGER,MPI_SUM,mpi%sub_comm,ierr)
CALL MPI_BARRIER(mpi%MPI_COMM,ierr) CALL MPI_BARRIER(mpi%MPI_COMM,ierr)
#else #else
results%neig(:,:) = neigBuffer(:,:) results%neig(:,:) = neigBuffer(:,:)
results%unfolding_weights(:,:,:) = unfoldingBuffer(:,:,:)
#endif #endif
! Sorry for the following strange workaround to fill the results%eig array. ! Sorry for the following strange workaround to fill the results%eig array.
......
...@@ -52,6 +52,7 @@ contains ...@@ -52,6 +52,7 @@ contains
ELSE ELSE
IF (banddos%unfoldband) THEN IF (banddos%unfoldband) THEN
CALL unfold_band_kpts(banddos,p_cell,cell,p_kpts,kpts) CALL unfold_band_kpts(banddos,p_cell,cell,p_kpts,kpts)
CALL julia(sym,cell,input,noco,banddos,kpts,.FALSE.,.TRUE.)
CALL julia(sym,p_cell,input,noco,banddos,p_kpts,.FALSE.,.TRUE.) CALL julia(sym,p_cell,input,noco,banddos,p_kpts,.FALSE.,.TRUE.)
CALL find_supercell_kpts(banddos,p_cell,cell,p_kpts,kpts) CALL find_supercell_kpts(banddos,p_cell,cell,p_kpts,kpts)
ELSE ELSE
......
This diff is collapsed.
...@@ -38,6 +38,7 @@ SUBROUTINE cdngen(eig_id,mpi,input,banddos,sliceplot,vacuum,& ...@@ -38,6 +38,7 @@ SUBROUTINE cdngen(eig_id,mpi,input,banddos,sliceplot,vacuum,&
USE m_Ekwritesl USE m_Ekwritesl
USE m_banddos_io USE m_banddos_io
USE m_metagga USE m_metagga
USE m_unfold_band_kpts
#ifdef CPP_MPI #ifdef CPP_MPI
USE m_mpi_bc_potden USE m_mpi_bc_potden
#endif #endif
...@@ -81,11 +82,12 @@ SUBROUTINE cdngen(eig_id,mpi,input,banddos,sliceplot,vacuum,& ...@@ -81,11 +82,12 @@ SUBROUTINE cdngen(eig_id,mpi,input,banddos,sliceplot,vacuum,&
!Local Scalars !Local Scalars
REAL :: fix, qtot, dummy REAL :: fix, qtot, dummy,eFermiPrev
INTEGER :: jspin, jspmax INTEGER :: jspin, jspmax
#ifdef CPP_HDF #ifdef CPP_HDF
INTEGER(HID_T) :: banddosFile_id INTEGER(HID_T) :: banddosFile_id
#endif #endif
LOGICAL :: l_error
CALL regCharges%init(input,atoms) CALL regCharges%init(input,atoms)
CALL dos%init(input,atoms,dimension,kpts,vacuum) CALL dos%init(input,atoms,dimension,kpts,vacuum)
...@@ -119,6 +121,11 @@ SUBROUTINE cdngen(eig_id,mpi,input,banddos,sliceplot,vacuum,& ...@@ -119,6 +121,11 @@ SUBROUTINE cdngen(eig_id,mpi,input,banddos,sliceplot,vacuum,&
IF (mpi%irank == 0) THEN IF (mpi%irank == 0) THEN
IF (banddos%dos.or.banddos%vacdos.or.input%cdinf) THEN IF (banddos%dos.or.banddos%vacdos.or.input%cdinf) THEN
IF (banddos%unfoldband) THEN
eFermiPrev = 0.0
CALL readPrevEFermi(eFermiPrev,l_error)
CALL write_band_sc(kpts,results,eFermiPrev)
END IF
#ifdef CPP_HDF #ifdef CPP_HDF
CALL openBandDOSFile(banddosFile_id,input,atoms,cell,kpts) CALL openBandDOSFile(banddosFile_id,input,atoms,cell,kpts)
CALL writeBandDOSData(banddosFile_id,input,atoms,cell,kpts,results,banddos,dos,vacuum) CALL writeBandDOSData(banddosFile_id,input,atoms,cell,kpts,results,banddos,dos,vacuum)
......
...@@ -55,10 +55,9 @@ module m_SphBessel ...@@ -55,10 +55,9 @@ module m_SphBessel
! modernised and extended by M. Hinzen (2016) ! modernised and extended by M. Hinzen (2016)
!------------------------------------------------------------------------- !-------------------------------------------------------------------------
use m_constants, only: ImagUnit
implicit none implicit none
complex, parameter :: CI = (0.0, 1.0)
interface SphBessel interface SphBessel
module procedure SphBesselComplex, SphBesselReal module procedure SphBesselComplex, SphBesselReal
...@@ -105,7 +104,7 @@ contains ...@@ -105,7 +104,7 @@ contains
end do EXPANSION end do EXPANSION
jl(l) = jl(l) * zj jl(l) = jl(l) * zj
nl(l) = -nl(l) * zn nl(l) = -nl(l) * zn
hl(l) = jl(l) + nl(l) * CI hl(l) = jl(l) + nl(l) * ImagUnit
zj = zj * z / ( rl + 3.0 ) zj = zj * z / ( rl + 3.0 )
zn = zn / z * ( rl + 1.0 ) zn = zn / z * ( rl + 1.0 )
end do SERIAL_L_LOOP end do SERIAL_L_LOOP
...@@ -120,12 +119,12 @@ contains ...@@ -120,12 +119,12 @@ contains
SERIAL_M_LOOP: do m = 0, l SERIAL_M_LOOP: do m = 0, l
hl(l) = hl(l) + (-1) ** m * rnm(l) hl(l) = hl(l) + (-1) ** m * rnm(l)
nl(l) = nl(l) + rnm(l) nl(l) = nl(l) + rnm(l)
rnm(l) = rnm(l) / ( m + 1.0 ) * ( l * ( l + 1 ) - m * ( m + 1 ) ) / ( CI * ( z + z ) ) rnm(l) = rnm(l) / ( m + 1.0 ) * ( l * ( l + 1 ) - m * ( m + 1 ) ) / ( ImagUnit * ( z + z ) )
end do SERIAL_M_LOOP end do SERIAL_M_LOOP
hl(l) = hl(l) * (-CI) ** l * exp( CI * z ) / ( CI * z ) hl(l) = hl(l) * (-ImagUnit) ** l * exp( ImagUnit * z ) / ( ImagUnit * z )
nl(l) = nl(l) * CI ** l * exp( -CI * z ) / ( -CI * z ) nl(l) = nl(l) * ImagUnit ** l * exp( -ImagUnit * z ) / ( -ImagUnit * z )
jl(l) = ( hl(l) + nl(l) ) / 2.0 jl(l) = ( hl(l) + nl(l) ) / 2.0
nl(l) = ( hl(l) - jl(l) ) * (-CI) nl(l) = ( hl(l) - jl(l) ) * (-ImagUnit)
end if end if
end do PARALLEL_L_LOOP end do PARALLEL_L_LOOP
...@@ -165,11 +164,11 @@ contains ...@@ -165,11 +164,11 @@ contains
integer :: l integer :: l
call SphBesselComplex( il, nl, kl, CI * z, lmax ) call SphBesselComplex( il, nl, kl, ImagUnit * z, lmax )
do l = 0, lmax do l = 0, lmax
il(l) = (-CI) ** l * il(l) il(l) = (-ImagUnit) ** l * il(l)
kl(l) = - CI ** l * kl(l) kl(l) = - ImagUnit ** l * kl(l)
end do end do
end subroutine ModSphBesselComplex end subroutine ModSphBesselComplex
...@@ -185,11 +184,11 @@ contains ...@@ -185,11 +184,11 @@ contains
integer :: l integer :: l
call SphBesselComplex( il, nl, kl, CI * z, lmax ) call SphBesselComplex( il, nl, kl, ImagUnit * z, lmax )
do l = 0, lmax do l = 0, lmax
il(l) = (-CI) ** l * il(l) il(l) = (-ImagUnit) ** l * il(l)
kl(l) = - CI ** l * kl(l) kl(l) = - ImagUnit ** l * kl(l)
end do end do
end subroutine ModSphBesselComplex2 end subroutine ModSphBesselComplex2
...@@ -207,12 +206,12 @@ contains ...@@ -207,12 +206,12 @@ contains
complex :: z complex :: z
z = CI * x z = ImagUnit * x
call SphBesselComplex( jl, nl, hl, z, lmax ) call SphBesselComplex( jl, nl, hl, z, lmax )
do l = 0, lmax do l = 0, lmax
il(l) = (-CI) ** l * jl(l) il(l) = (-ImagUnit) ** l * jl(l)
kl(l) = - CI ** l * hl(l) kl(l) = - ImagUnit ** l * hl(l)
end do end do
end subroutine ModSphBesselReal end subroutine ModSphBesselReal
......
...@@ -38,7 +38,7 @@ CONTAINS ...@@ -38,7 +38,7 @@ CONTAINS
INTEGER n INTEGER n
REAL rdum REAL rdum
! .. Local Arrays .. ! .. Local Arrays ..
INTEGER i(39),ierr(3) INTEGER i(42),ierr(3)
REAL r(34) REAL r(34)
LOGICAL l(45) LOGICAL l(45)
! .. ! ..
...@@ -57,7 +57,7 @@ CONTAINS ...@@ -57,7 +57,7 @@ CONTAINS
i(27)=vacuum%nstars ; i(28)=vacuum%nstm ; i(29)=oneD%odd%nq2 ; i(30)=oneD%odd%nop i(27)=vacuum%nstars ; i(28)=vacuum%nstm ; i(29)=oneD%odd%nq2 ; i(30)=oneD%odd%nop
i(31)=input%gw ; i(32)=input%gw_neigd ; i(33)=hybrid%ewaldlambda ; i(34)=hybrid%lexp i(31)=input%gw ; i(32)=input%gw_neigd ; i(33)=hybrid%ewaldlambda ; i(34)=hybrid%lexp
i(35)=hybrid%bands1 ; i(36)=1 ; i(37)=input%imix ; i(38)=banddos%orbCompAtom i(35)=hybrid%bands1 ; i(36)=1 ; i(37)=input%imix ; i(38)=banddos%orbCompAtom
i(39)=input%kcrel i(39)=input%kcrel;i(40)=banddos%s_cell_x;i(41)=banddos%s_cell_y;i(42)=banddos%s_cell_z
r(1)=cell%omtil ; r(2)=cell%area ; r(3)=vacuum%delz ; r(4)=cell%z1 ; r(5)=input%alpha r(1)=cell%omtil ; r(2)=cell%area ; r(3)=vacuum%delz ; r(4)=cell%z1 ; r(5)=input%alpha
r(6)=sliceplot%e1s ; r(7)=sliceplot%e2s ; r(8)=noco%theta; r(9)=noco%phi; r(10)=vacuum%tworkf r(6)=sliceplot%e1s ; r(7)=sliceplot%e2s ; r(8)=noco%theta; r(9)=noco%phi; r(10)=vacuum%tworkf
...@@ -76,7 +76,7 @@ CONTAINS ...@@ -76,7 +76,7 @@ CONTAINS
l(21)=input%pallst ; l(22)=sliceplot%slice ; l(23)=noco%l_soc ; l(24)=vacuum%starcoeff l(21)=input%pallst ; l(22)=sliceplot%slice ; l(23)=noco%l_soc ; l(24)=vacuum%starcoeff
l(25)=noco%l_noco ; l(26)=noco%l_ss; l(27)=noco%l_mperp; l(28)=noco%l_constr l(25)=noco%l_noco ; l(26)=noco%l_ss; l(27)=noco%l_mperp; l(28)=noco%l_constr
l(29)=oneD%odd%d1 ; l(32)=input%ctail ; l(33)=banddos%l_orb l(29)=oneD%odd%d1 ; l(32)=input%ctail ; l(33)=banddos%l_orb
l(34)=banddos%l_mcd l(34)=banddos%l_mcd ; l(35)=banddos%unfoldband
l(38)=field%efield%l_segmented l(38)=field%efield%l_segmented
l(39)=sym%symor ; l(40)=input%frcor ; l(41)=input%tria ; l(42)=field%efield%dirichlet l(39)=sym%symor ; l(40)=input%frcor ; l(41)=input%tria ; l(42)=field%efield%dirichlet
l(43)=field%efield%l_dirichlet_coeff ; l(44)=input%l_coreSpec ; l(45)=input%ldauLinMix l(43)=field%efield%l_dirichlet_coeff ; l(44)=input%l_coreSpec ; l(45)=input%ldauLinMix
...@@ -90,7 +90,7 @@ CONTAINS ...@@ -90,7 +90,7 @@ CONTAINS
sliceplot%nnne=i(17) ; banddos%ndir=i(18) ; stars%mx1=i(19) ; stars%mx2=i(20) ; stars%mx3=i(21) sliceplot%nnne=i(17) ; banddos%ndir=i(18) ; stars%mx1=i(19) ; stars%mx2=i(20) ; stars%mx3=i(21)
input%jspins=i(12) ; vacuum%nvac=i(13) ; input%itmax=i(14) ; sliceplot%kk=i(15) ; vacuum%layers=i(16) input%jspins=i(12) ; vacuum%nvac=i(13) ; input%itmax=i(14) ; sliceplot%kk=i(15) ; vacuum%layers=i(16)
stars%ng2=i(7) ; stars%ng3=i(8) ; vacuum%nmz=i(9) ; vacuum%nmzxy=i(10) ; obsolete%lepr=i(11) stars%ng2=i(7) ; stars%ng3=i(8) ; vacuum%nmz=i(9) ; vacuum%nmzxy=i(10) ; obsolete%lepr=i(11)
atoms%ntype=i(3) ; input%isec1=i(6) ; banddos%orbCompAtom=i(38) atoms%ntype=i(3) ; input%isec1=i(6) ; banddos%orbCompAtom=i(38);banddos%s_cell_x=i(40);banddos%s_cell_y=i(41);banddos%s_cell_z=i(42)
input%coretail_lmax=i(2) ; input%kcrel=i(39) input%coretail_lmax=i(2) ; input%kcrel=i(39)
stars%kimax=i(25);stars%kimax2=i(26) stars%kimax=i(25);stars%kimax2=i(26)
! !
...@@ -118,6 +118,7 @@ CONTAINS ...@@ -118,6 +118,7 @@ CONTAINS
input%eonly=l(1) ; input%secvar=l(3) ; sym%zrfs=l(4) ; input%film=l(5) input%eonly=l(1) ; input%secvar=l(3) ; sym%zrfs=l(4) ; input%film=l(5)
field%efield%l_segmented = l(38) ; sym%symor=l(39); field%efield%dirichlet = l(40) field%efield%l_segmented = l(38) ; sym%symor=l(39); field%efield%dirichlet = l(40)
field%efield%l_dirichlet_coeff = l(41) ; input%l_coreSpec=l(44) ; input%ldauLinMix=l(45) field%efield%l_dirichlet_coeff = l(41) ; input%l_coreSpec=l(44) ; input%ldauLinMix=l(45)
banddos%unfoldband=l(35)
! !
! -> Broadcast the arrays: ! -> Broadcast the arrays:
IF (field%efield%l_segmented) THEN IF (field%efield%l_segmented) THEN
...@@ -265,6 +266,13 @@ CONTAINS ...@@ -265,6 +266,13 @@ CONTAINS
CALL MPI_BCAST(kpts%specialPoints,3*kpts%numSpecialPoints,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr) CALL MPI_BCAST(kpts%specialPoints,3*kpts%numSpecialPoints,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
END IF END IF
IF(banddos%unfoldband) THEN
IF(mpi%irank.NE.0) THEN
ALLOCATE(kpts%sc_list(13,kpts%nkpt))
END IF
CALL MPI_BCAST(kpts%sc_list,13*kpts%nkpt,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
END IF
RETURN RETURN
#endif #endif
END SUBROUTINE mpi_bc_all END SUBROUTINE mpi_bc_all
......
...@@ -33,7 +33,7 @@ MODULE m_types_kpts ...@@ -33,7 +33,7 @@ MODULE m_types_kpts
REAL ,ALLOCATABLE :: specialPoints(:,:) REAL ,ALLOCATABLE :: specialPoints(:,:)
INTEGER,ALLOCATABLE :: ntetra(:,:) INTEGER,ALLOCATABLE :: ntetra(:,:)
REAL ,ALLOCATABLE :: voltet(:) REAL ,ALLOCATABLE :: voltet(:)
REAL ,ALLOCATABLE :: sc_list(:,:) !list for all information about folding of bandstructure (need for unfoldBandKPTS)((k(x,y,z),K(x,y,z),m(g1,g2,g3)),(nkpt)) REAL ,ALLOCATABLE :: sc_list(:,:) !list for all information about folding of bandstructure (need for unfoldBandKPTS)((k(x,y,z),K(x,y,z),m(g1,g2,g3)),(nkpt),k_original(x,y,z))
ENDTYPE t_kpts ENDTYPE t_kpts
......
...@@ -58,6 +58,7 @@ MODULE m_types_misc ...@@ -58,6 +58,7 @@ MODULE m_types_misc
REAL :: tote REAL :: tote
REAL :: last_distance REAL :: last_distance
REAL :: bandgap REAL :: bandgap
COMPLEX, ALLOCATABLE :: unfolding_weights(:,:,:) !weights for unfolding a supercell bandstructure
TYPE(t_energy_hf) :: te_hfex TYPE(t_energy_hf) :: te_hfex
REAL :: te_hfex_loc(2) REAL :: te_hfex_loc(2)
REAL, ALLOCATABLE :: w_iks(:,:,:) REAL, ALLOCATABLE :: w_iks(:,:,:)
...@@ -156,6 +157,7 @@ CONTAINS ...@@ -156,6 +157,7 @@ CONTAINS
ALLOCATE (thisResults%w_iks(neigd2,kpts%nkpt,input%jspins)) ALLOCATE (thisResults%w_iks(neigd2,kpts%nkpt,input%jspins))
ALLOCATE (thisResults%neig(kpts%nkpt,input%jspins)) ALLOCATE (thisResults%neig(kpts%nkpt,input%jspins))
ALLOCATE (thisResults%eig(neigd2,kpts%nkpt,input%jspins)) ALLOCATE (thisResults%eig(neigd2,kpts%nkpt,input%jspins))
ALLOCATE (thisResults%unfolding_weights(neigd2,kpts%nkpt,input%jspins))
thisResults%force = 0.0 thisResults%force = 0.0
thisResults%force_old = 0.0 thisResults%force_old = 0.0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment