diff --git a/main/fleur.F90 b/main/fleur.F90 index 7db21a1bf37bc93f38ac820757a108cd3cb9d05c..fec0ee40ebe3dead38a70c2bad834733acb6b60c 100644 --- a/main/fleur.F90 +++ b/main/fleur.F90 @@ -581,7 +581,7 @@ CONTAINS INQUIRE (file='wann_inp',exist=input%l_wann) IF ((input%l_wann).AND.(.NOT.wann%l_bs_comf)) THEN CALL wannier(DIMENSION,mpi,input,sym,atoms,stars,vacuum,sphhar,oneD,& - wann,noco,cell,enpara,banddos,sliceplot,results,& + wann,noco,cell,enpara,banddos,sliceplot,vTot,results,& eig_idList,(sym%invs).AND.(.NOT.noco%l_noco),kpts%nkpt) END IF IF (wann%l_gwf) CALL juDFT_error("provide wann_inp if l_gwf=T", calledby = "fleur") diff --git a/main/vgen.F90 b/main/vgen.F90 index 555637c433ff27f86b5b30194d923479907d0199..44e2ab8cd69b4ec70b78de310dac223adecc8256 100644 --- a/main/vgen.F90 +++ b/main/vgen.F90 @@ -843,9 +843,9 @@ CONTAINS ENDIF ! mpi%irank == 0 #ifdef CPP_MPI - CALL mpi_bc_pot(mpi,stars,sphhar,atoms,input,vacuum,vTot%iter,vTot%mt,vTot%pw,vTot%vacz,vTot%vacxy) - CALL mpi_bc_pot(mpi,stars,sphhar,atoms,input,vacuum,vCoul%iter,vCoul%mt,vCoul%pw,vCoul%vacz,vCoul%vacxy) - CALL mpi_bc_potden(mpi,stars,sphhar,atoms,input,vacuum,oneD,noco,vx) + CALL mpi_bc_pot(mpi,stars,sphhar,atoms,input,vacuum,vTot%iter,vTot%mt,vTot%pw,vTot%vacz,vTot%vacxy) + CALL mpi_bc_pot(mpi,stars,sphhar,atoms,input,vacuum,vCoul%iter,vCoul%mt,vCoul%pw,vCoul%vacz,vCoul%vacxy) + CALL mpi_bc_potden(mpi,stars,sphhar,atoms,input,vacuum,oneD,noco,vx) #endif END SUBROUTINE vgen diff --git a/wannier/uhu/wann_uHu.F b/wannier/uhu/wann_uHu.F index d2600ec36ba5797d20b9a6b3eda43ac5dc5f2b19..8232b0c7e0a3bd4eae2c388dcd4e45afe611392c 100644 --- a/wannier/uhu/wann_uHu.F +++ b/wannier/uhu/wann_uHu.F @@ -20,7 +20,7 @@ c*******************************************c CONTAINS SUBROUTINE wann_uHu( > DIMENSION,stars,vacuum,atoms,sphhar,input,sym,mpi,banddos, - > oneD,noco,cell,wann, + > oneD,noco,cell,vTot,wann, > eig_idList,l_real,l_dulo,l_noco,l_ss,lmaxd,ntypd, > neigd,natd,nop,nvd,jspd,nbasfcn,llod,nlod,ntype, > omtil,nlo,llo,lapw_l,invtab,mrot,ngopr,neq,lmax, @@ -43,7 +43,6 @@ c*******************************************c use m_radfun use m_radflo use m_cdnread - use m_loddop use m_constants, only : pimach use m_wann_projmethod use m_wann_abinv @@ -83,6 +82,7 @@ c*******************************************c TYPE(t_oneD),INTENT(IN) :: oneD TYPE(t_noco),INTENT(IN) :: noco TYPE(t_cell),INTENT(IN) :: cell + TYPE(t_potden),INTENT(IN) :: vTot TYPE(t_wann),INTENT(INOUT) :: wann c ..scalar arguments.. @@ -147,7 +147,7 @@ c ..allocatable arrays.. INTEGER, ALLOCATABLE :: innerEig_idList(:) real, allocatable :: we(:),we_b(:),we_b2(:) real, allocatable :: eigg(:) - real, allocatable :: vr(:,:,:),vz(:,:,:),vrf(:,:,:,:) + real, allocatable :: vr(:,:,:),vz(:,:,:) real, allocatable :: flo(:,:,:,:,:) real, allocatable :: ff(:,:,:,:,:),gg(:,:,:,:,:) real, allocatable :: us(:,:,:),uds(:,:,:),ulos(:,:,:) @@ -470,28 +470,26 @@ c********************************************************* allocate ( vpw(n3d,4),vzxy(nmzxyd,odi%n2d-1,2,4) ) endif - allocate ( vz(nmzd,2,4) ) - allocate ( vrf(jmtd,0:nlhd,ntypd,jspd) ) - allocate ( vr(jmtd,ntypd,jspd) ) + allocate (vz(nmzd,2,4)) + allocate (vr(jmtd,ntypd,jspd)) - open (8,file='pottot',form='unformatted',status='old') - rewind (8) - - call loddop(stars,vacuum,atoms,sphhar,input,sym, - > 8, - < iter,vrf,vpw,vz,vzxy) - - close (8) + vpw(:,1:SIZE(vTot%pw,2)) = vTot%pw(:,1:SIZE(vTot%pw,2)) + IF(film) THEN + vz(:,:,1:SIZE(vTot%vacz,3)) = + & vTot%vacz(:,:,1:SIZE(vTot%vacz,3)) + vzxy(:,:,:,1:SIZE(vTot%vacxy,4)) = + & vTot%vacxy(:,:,:,1:SIZE(vTot%vacxy,4)) + END IF do jspin = 1,jspins do n = 1, ntype do j = 1,jri(n) - vr(j,n,jspin) = vrf(j,0,n,jspin) + vr(j,n,jspin) = vTot%mt(j,0,n,jspin) enddo enddo enddo - if(.not. film) deallocate(vz,vzxy) + if(.not.film) deallocate(vz,vzxy) if(l_noco)then npotmatfile=25 @@ -885,7 +883,7 @@ c na = na + neq(n) > memd,nlhd,ntypsd,ntypd,jmtd,lmaxd,jspd,ntype,dx, > rmsh,jri,lmax,ntypsy,natd,lnonsph,lmd,lmplmd,clnu, > mlh,nmem,llh,nlh,neq,irank,mlotot,mlolotot, - > vrf(:,:,:,jspin3),nlod,llod,loplod,ello(1,1,jspin3), + > vTot%mt(:,:,:,jspin3),nlod,llod,loplod,ello(1,1,jspin3), > llo,nlo,lo1l,l_dulo,ulo_der,ff(:,:,:,:,jspin), > gg(:,:,:,:,jspin),flo(:,:,:,:,jspin), > ff(:,:,:,:,jspin_b),gg(:,:,:,:,jspin_b), @@ -1474,7 +1472,7 @@ c************************************************c if(allocated(vpw)) deallocate(vpw) if(allocated(vzxy)) deallocate(vzxy) if(allocated(vz)) deallocate(vz) - deallocate(vrf,vr) + deallocate(vr) deallocate(tdd,tdu,tud,tuu) deallocate(tdulo,tuulo) deallocate(tulou,tulod) diff --git a/wannier/uhu/wann_uHu_dmi.F b/wannier/uhu/wann_uHu_dmi.F index 9a7492423367ba1e1bcc0d92336cb7efd2acc191..05e906abe8e9b46bb8f43003e08241f09a766fab 100644 --- a/wannier/uhu/wann_uHu_dmi.F +++ b/wannier/uhu/wann_uHu_dmi.F @@ -20,7 +20,7 @@ c*******************************************c CONTAINS SUBROUTINE wann_uHu_dmi( > DIMENSION,stars,vacuum,atoms,sphhar,input,sym,mpi,banddos, - > oneD,noco,cell,wann, + > oneD,noco,cell,vTot,wann, > eig_idList,l_real,l_dulo,l_noco,l_ss,lmaxd,ntypd, > neigd,natd,nop,nvd,jspd,nbasfcn,llod,nlod,ntype, > omtil,nlo,llo,lapw_l,invtab,mrot,ngopr,neq,lmax, @@ -44,7 +44,6 @@ c*******************************************c use m_radflo use m_cdnread use m_types - use m_loddop use m_constants, only : pimach use m_wann_projmethod use m_wann_abinv @@ -84,6 +83,7 @@ c*******************************************c TYPE(t_oneD),INTENT(IN) :: oneD TYPE(t_noco),INTENT(IN) :: noco TYPE(t_cell),INTENT(IN) :: cell + TYPE(t_potden),INTENT(IN) :: vTot TYPE(t_wann),INTENT(INOUT) :: wann c ..scalar arguments.. @@ -148,7 +148,7 @@ c ..allocatable arrays.. INTEGER, ALLOCATABLE :: innerEig_idList(:) real, allocatable :: we(:),we_b(:),we_b2(:) real, allocatable :: eigg(:) - real, allocatable :: vr(:,:,:),vz(:,:,:),vrf(:,:,:,:) + real, allocatable :: vr(:,:,:),vz(:,:,:) real, allocatable :: flo(:,:,:,:,:) real, allocatable :: ff(:,:,:,:,:),gg(:,:,:,:,:) real, allocatable :: us(:,:,:),uds(:,:,:),ulos(:,:,:) @@ -474,28 +474,26 @@ c********************************************************* allocate ( vpw(n3d,4),vzxy(nmzxyd,odi%n2d-1,2,4) ) endif - allocate ( vz(nmzd,2,4) ) - allocate ( vrf(jmtd,0:nlhd,ntypd,jspd) ) - allocate ( vr(jmtd,ntypd,jspd) ) + allocate (vz(nmzd,2,4)) + allocate (vr(jmtd,ntypd,jspd)) - open (8,file='pottot',form='unformatted',status='old') - rewind (8) - - call loddop(stars,vacuum,atoms,sphhar,input,sym, - > 8, - < iter,vrf,vpw,vz,vzxy) - - close (8) + vpw(:,1:SIZE(vTot%pw,2)) = vTot%pw(:,1:SIZE(vTot%pw,2)) + IF(film) THEN + vz(:,:,1:SIZE(vTot%vacz,3)) = + & vTot%vacz(:,:,1:SIZE(vTot%vacz,3)) + vzxy(:,:,:,1:SIZE(vTot%vacxy,4)) = + & vTot%vacxy(:,:,:,1:SIZE(vTot%vacxy,4)) + END IF do jspin = 1,jspins do n = 1, ntype do j = 1,jri(n) - vr(j,n,jspin) = vrf(j,0,n,jspin) + vr(j,n,jspin) = vTot%mt(j,0,n,jspin) enddo enddo enddo - if(.not. film) deallocate(vz,vzxy) + if(.not.film) deallocate(vz,vzxy) if(l_noco)then npotmatfile=25 @@ -850,7 +848,7 @@ c na = na + neq(n) > memd,nlhd,ntypsd,ntypd,jmtd,lmaxd,jspd,ntype,dx, > rmsh,jri,lmax,ntypsy,natd,lnonsph,lmd,lmplmd,clnu, > mlh,nmem,llh,nlh,neq,irank,mlotot,mlolotot, - > vrf(:,:,:,jspin3),nlod,llod,loplod,ello(1,1,jspin3), + > vTot%mt(:,:,:,jspin3),nlod,llod,loplod,ello(1,1,jspin3), > llo,nlo,lo1l,l_dulo,ulo_der,ff(:,:,:,:,jspin), > gg(:,:,:,:,jspin),flo(:,:,:,:,jspin), > ff(:,:,:,:,jspin_b),gg(:,:,:,:,jspin_b), @@ -1448,7 +1446,7 @@ c************************************************c if(allocated(vpw)) deallocate(vpw) if(allocated(vzxy)) deallocate(vzxy) if(allocated(vz)) deallocate(vz) - deallocate(vrf,vr) + deallocate(vr) deallocate(tdd,tdu,tud,tuu) deallocate(tdd_soc,tdu_soc,tud_soc,tuu_soc) deallocate(tdulo,tuulo) diff --git a/wannier/wann_plot_um_dat.F b/wannier/wann_plot_um_dat.F index ca6a294dab5ecb6eec652316f2161f897b88abba..bcd282b1c1ad1ddfaf7de3bbdb20533d73fb6083 100644 --- a/wannier/wann_plot_um_dat.F +++ b/wannier/wann_plot_um_dat.F @@ -14,7 +14,7 @@ c****************************************************************** CONTAINS SUBROUTINE wann_plot_um_dat( > DIMENSION,stars,vacuum,atoms,sphhar,input,sym,mpi, - > lapw,oneD,noco,cell,eig_id,l_real, + > lapw,oneD,noco,cell,vTot,eig_id,l_real, > mpi_comm,sortrule,band_min,band_max,l_soc, > l_dulo,l_noco,l_ss,lmaxd, > ntypd, @@ -37,7 +37,6 @@ c****************************************************************** use m_radflo use m_cdnread, only : cdn_read0 use m_types - use m_loddop use m_constants use m_wann_real use m_xsf_io @@ -70,6 +69,7 @@ c****************************************************************** TYPE(t_oneD),INTENT(IN) :: oneD TYPE(t_noco),INTENT(IN) :: noco TYPE(t_cell),INTENT(IN) :: cell + TYPE(t_potden),INTENT(IN) :: vTot integer, intent (in) :: band_min(2),band_max(2),mpi_comm,eig_id logical, intent (in) :: l_soc,l_real @@ -132,9 +132,7 @@ cccccccccccccccccc local variables cccccccccccccccccccc !!! the parameters for the number of wfs integer :: nwfs !!! the potential in the spheres and the vacuum - real, allocatable :: vr(:,:,:),vz(:,:,:),vrf(:,:,:,:) -!!! auxiliary potentials - complex, allocatable :: vpw(:,:),vzxy(:,:,:,:) + real, allocatable :: vr(:,:,:),vz(:,:,:) !!! bkpts data integer :: nntot,ikpt_help integer, allocatable :: gb(:,:,:),bpt(:,:) @@ -310,28 +308,18 @@ c WRITE(20,*) " filename='plot1' /" cccccccccccccccc initialize the potential cccccccccccc - allocate ( vpw(n3d,jspd),vzxy(nmzxyd,odi%n2d-1,2,jspd) ) - allocate ( vz(nmzd,2,jspd),vrf(jmtd,0:nlhd,ntypd,jspd) ) - allocate ( vr(jmtd,ntypd,jspd) ) + allocate (vz(nmzd,2,jspd)) + allocate (vr(jmtd,ntypd,jspd)) - open (8,file='pottot',form='unformatted',status='old') - rewind (8) - - call loddop(stars,vacuum,atoms,sphhar,input,sym, - > 8, - < iter,vrf,vpw,vz,vzxy) - - close (8) + vz = vTot%vacz do jspin = 1,jspins do n = 1, ntype do j = 1,jri(n) - vr(j,n,jspin) = vrf(j,0,n,jspin) + vr(j,n,jspin) = vTot%mt(j,0,n,jspin) enddo enddo enddo - - deallocate ( vpw,vzxy,vrf ) cccccccccccccccc end of the potential part ccccccccccc wannierspin=jspins diff --git a/wannier/wann_postproc.F b/wannier/wann_postproc.F index e341fb7fd295aad567de6232dc4f7dcc3727995a..197737d6524884a57bb3f1958f2416f809b5306d 100644 --- a/wannier/wann_postproc.F +++ b/wannier/wann_postproc.F @@ -8,7 +8,7 @@ contains subroutine wann_postproc( > DIMENSION,stars,vacuum,atoms,sphhar,input,sym,mpi, - > lapw,oneD,noco,cell,eig_id,l_real, + > lapw,oneD,noco,cell,vTot,eig_id,l_real, > mpi_comm,wann,l_p0,film,jspins,n2d, > natd,pos,amat,bmat,ntype,neq,zatom, > omtil,l_soc,l_noco,neigd,fullnkpts, @@ -78,6 +78,7 @@ c*********************************************** TYPE(t_oneD),INTENT(IN) :: oneD TYPE(t_noco),INTENT(IN) :: noco TYPE(t_cell),INTENT(IN) :: cell + TYPE(t_potden),INTENT(IN) :: vTot type(t_wann), intent(in) :: wann logical, intent(in) :: l_p0 @@ -445,7 +446,7 @@ c > volint,symor,pos,ef,wann%l_bzsym,irecl) if(wann%l_plot_umdat)then call wann_plot_um_dat( > DIMENSION,stars,vacuum,atoms,sphhar,input,sym,mpi, - > lapw,oneD,noco,cell,eig_id,l_real, + > lapw,oneD,noco,cell,vTot,eig_id,l_real, > mpi_comm,i,wann%band_min,wann%band_max,l_soc, > l_dulo,l_noco,l_ss,lmaxd,ntypd, > neigd,natd,nop,nvd,jspd,nbasfcn,llod,nlod,ntype, @@ -466,6 +467,7 @@ c > volint,symor,pos,ef,wann%l_bzsym,irecl) call wannier_to_lapw( > mpi_comm,eig_id,l_real, > input,lapw,oneD,noco,sym,cell,atoms,stars,vacuum,sphhar, + > vTot, > l_soc,wann%unigrid,i,wann%band_min,wann%band_max, > l_dulo,l_noco,l_ss,lmaxd,ntypd, > neigd,natd,nop,nvd,jspd,nbasfcn,llod,nlod,ntype, diff --git a/wannier/wann_updown.F b/wannier/wann_updown.F index e8010770906dd2320203d49fa2a401079a7dccef..fce3c59adcb904cb0e8987557b56f74b17b870e9 100644 --- a/wannier/wann_updown.F +++ b/wannier/wann_updown.F @@ -8,7 +8,7 @@ use m_juDFT CONTAINS SUBROUTINE wann_updown( - > mpi,input,sym,atoms,stars,vacuum,sphhar,oneD,noco,cell, + > mpi,input,sym,atoms,stars,vacuum,sphhar,oneD,noco,cell,vTot, > enpara, > eig_id,l_real,mpi_comm,l_dulo,l_noco,l_ss,lmaxd,ntypd, > neigd,natd,nop,nvd,jspd,nbasfcn,llod,nlod,ntype, @@ -40,7 +40,6 @@ c**************************************************************************** use m_radfun use m_radflo use m_cdnread, only : cdn_read0, cdn_read - use m_loddop use m_constants, only : pimach ! use m_wann_mmk0_od_vac use m_wann_mmk0_vac @@ -83,6 +82,7 @@ c**************************************************************************** TYPE(t_oneD),INTENT(IN) :: oneD TYPE(t_noco),INTENT(IN) :: noco TYPE(t_cell),INTENT(IN) :: cell + TYPE(t_potden),INTENT(IN) :: vTot TYPE(t_enpara),INTENT(IN) :: enpara logical, intent (in) :: invs,invs2,film,slice,symor,l_real @@ -153,9 +153,7 @@ cccccccccccccccccc local variables cccccccccccccccccccc !!! the parameters for the number of wfs integer :: nwfs !!! the potential in the spheres and the vacuum - real, allocatable :: vr(:,:,:),vz(:,:,:),vrf(:,:,:,:) -!!! auxiliary potentials - complex, allocatable :: vpw(:,:),vzxy(:,:,:,:) + real, allocatable :: vr(:,:,:),vz(:,:,:) !!! bkpts data integer nntot,ikpt_help integer, allocatable :: gb(:,:,:),bpt(:,:) @@ -368,28 +366,18 @@ c********************************************************* cccccccccccccccc initialize the potential cccccccccccc c********************************************************* - allocate ( vpw(n3d,jspd),vzxy(nmzxyd,odi%n2d-1,2,jspd) ) - allocate ( vz(nmzd,2,jspd),vrf(jmtd,0:nlhd,ntypd,jspd) ) - allocate ( vr(jmtd,ntypd,jspd) ) + allocate (vz(nmzd,2,jspd)) + allocate (vr(jmtd,ntypd,jspd)) - open (8,file='pottot',form='unformatted',status='old') - rewind (8) - - call loddop(stars,vacuum,atoms,sphhar,input,sym, - > 8, - < iter,vrf,vpw,vz,vzxy) - - close (8) + vz = vTot%vacz do jspin = 1,jspins do n = 1, ntype do j = 1,jri(n) - vr(j,n,jspin) = vrf(j,0,n,jspin) + vr(j,n,jspin) = vTot%mt(j,0,n,jspin) enddo enddo enddo - - deallocate ( vpw,vzxy ) cccccccccccccccc end of the potential part ccccccccccc wannierspin=jspd @@ -881,7 +869,7 @@ c...for the lapws and local orbitals, summed by the basis functions > llod,jmtd,jspd,nlhd,soc_opt,neq, > ntype,theta,phi,jspins,irank, > jri,lmax,dx,rmsh,epar,ello,nlo,llo, - > l_dulo,ulo_der,vrf, + > l_dulo,ulo_der,vTot%mt, > acof,bcof,ccof, < hsomtx(:,:,:,:,ikpt)) endif diff --git a/wannier/wannier.F b/wannier/wannier.F index 90e848bd60eaf7f9bc566987aa958779684304b7..fbba3a7f3f00b2e58330513b7243dee373a1a83a 100644 --- a/wannier/wannier.F +++ b/wannier/wannier.F @@ -9,7 +9,7 @@ CONTAINS SUBROUTINE wannier( > DIMENSION,mpi,input,sym,atoms,stars,vacuum,sphhar,oneD, - > wann,noco,cell,enpara,banddos,sliceplot,results, + > wann,noco,cell,enpara,banddos,sliceplot,vTot,results, > eig_idList,l_real,nkpt) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c Makes necessary for the construction of the wannier functions @@ -64,7 +64,6 @@ ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc use m_radfun use m_radflo use m_cdnread - use m_loddop use m_constants use m_wann_mmk0_od_vac use m_wann_mmkb_od_vac @@ -130,6 +129,7 @@ ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc TYPE(t_enpara), INTENT(IN) :: enpara TYPE(t_banddos), INTENT(IN) :: banddos TYPE(t_sliceplot), INTENT(IN) :: sliceplot + TYPE(t_potden), INTENT(IN) :: vTot TYPE(t_results), INTENT(IN) :: results TYPE(t_wann), INTENT(INOUT) :: wann @@ -168,9 +168,9 @@ cccccccccccccccccc local variables cccccccccccccccccccc !!! the parameters for the number of wfs integer :: nwfs !!! the potential in the spheres and the vacuum - real, allocatable :: vr(:,:,:),vz(:,:,:),vrf(:,:,:,:) + real, allocatable :: vr(:,:,:),vz(:,:,:) !!! auxiliary potentials - complex, allocatable :: vpw(:,:),vzxy(:,:,:,:) + complex, allocatable :: vpw(:,:) !!! bkpts data integer nntot,ikpt_help integer, allocatable :: gb(:,:,:),bpt(:,:) @@ -402,7 +402,7 @@ c-----input file for orbital decomposition if(wann%l_updown)then call wann_updown( - > mpi,input,sym,atoms,stars,vacuum,sphhar,oneD,noco,cell, + > mpi,input,sym,atoms,stars,vacuum,sphhar,oneD,noco,cell,vTot, > enpara,eig_idList(1),l_real, > mpi%mpi_comm,atoms%l_dulo,noco%l_noco,noco%l_ss, > atoms%lmaxd,atoms%ntype,DIMENSION%neigd,atoms%nat,sym%nop, @@ -443,7 +443,7 @@ cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc wannTemp = wann call wann_uHu( > DIMENSION,stars,vacuum,atoms,sphhar,input,sym,mpi,banddos, - > oneD,noco,cell,wannTemp,eig_idList, + > oneD,noco,cell,vTot,wannTemp,eig_idList, > l_real,atoms%l_dulo,noco%l_noco,noco%l_ss,atoms%lmaxd, > atoms%ntype,DIMENSION%neigd,atoms%nat,sym%nop,DIMENSION%nvd, > DIMENSION%jspd,DIMENSION%nbasfcn,atoms%llod,atoms%nlod, @@ -486,7 +486,7 @@ cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc wannTemp = wann call wann_uHu_dmi( > DIMENSION,stars,vacuum,atoms,sphhar,input,sym,mpi,banddos, - > oneD,noco,cell,wannTemp,eig_idList, + > oneD,noco,cell,vTot,wannTemp,eig_idList, > l_real,atoms%l_dulo,noco%l_noco,noco%l_ss,atoms%lmaxd, > atoms%ntype,DIMENSION%neigd,atoms%nat,sym%nop,DIMENSION%nvd, > DIMENSION%jspd,DIMENSION%nbasfcn,atoms%llod,atoms%nlod, @@ -703,27 +703,16 @@ c********************************************************* cccccccccccccccc initialize the potential cccccccccccc c********************************************************* - allocate ( vpw(stars%ng3,DIMENSION%jspd) ) - allocate ( vzxy(vacuum%nmzxyd,oneD%odi%n2d-1,2,DIMENSION%jspd) ) allocate ( vz(vacuum%nmzd,2,4) ) - allocate ( vrf(atoms%jmtd,0:sphhar%nlhd, - + atoms%ntype,DIMENSION%jspd) ) allocate ( vr(atoms%jmtd,atoms%ntype,DIMENSION%jspd) ) allocate ( vso(atoms%jmtd,atoms%nat,2) ) - open (8,file='pottot',form='unformatted',status='old') - rewind (8) - - call loddop(stars,vacuum,atoms,sphhar,input,sym, - > 8, - < iter,vrf,vpw,vz,vzxy) - - close (8) + vz = vTot%vacz do jspin = 1,input%jspins do n = 1, atoms%ntype do j = 1,atoms%jri(n) - vr(j,n,jspin) = vrf(j,0,n,jspin) + vr(j,n,jspin) = vTot%mt(j,0,n,jspin) enddo enddo enddo @@ -732,9 +721,6 @@ c********************************************************* CALL vsoc(input,atoms,vr,epar,.TRUE., vso) endif - deallocate ( vpw,vzxy ) - deallocate(vrf) - if(noco%l_noco.and.input%film)then npotmatfile=25 allocate(vpw(stars%ng3,1)) @@ -2844,7 +2830,7 @@ c************************************************c call wann_postproc( > DIMENSION,stars,vacuum,atoms,sphhar,input,sym,mpi, - > lapw,oneD,noco,cell,eig_id,l_real, !eig_id is used here after closing the files?! + > lapw,oneD,noco,cell,vTot,eig_id,l_real, !eig_id is used here after closing the files?! > mpi%mpi_comm,wann,l_p0,input%film,input%jspins,stars%ng2, > atoms%nat,atoms%pos,cell%amat,cell%bmat,atoms%ntype, > atoms%neq,atoms%zatom,cell%omtil,noco%l_soc,noco%l_noco, diff --git a/wannier/wannier_to_lapw.F b/wannier/wannier_to_lapw.F index 362424c5fdc2033200891b73166a6f4df6f40c0d..31eab32607bdb51b3ee7e80557662eea5dbc97ce 100644 --- a/wannier/wannier_to_lapw.F +++ b/wannier/wannier_to_lapw.F @@ -18,6 +18,7 @@ c****************************************************************** subroutine wannier_to_lapw( > mpi_comm,eig_id,l_real, > input,lapw,oneD,noco,sym,cell,atoms,stars,vacuum,sphhar, + > vTot, > l_soc,unigrid,sortrule,band_min,band_max, > l_dulo,l_noco,l_ss,lmaxd,ntypd, > neigd,natd,nop,nvd,jspd,nbasfcn,llod,nlod,ntype, @@ -36,7 +37,6 @@ c****************************************************************** use m_radflo use m_cdnread, only : cdn_read0 use m_types - use m_loddop use m_constants use m_wann_real use m_xsf_io @@ -57,6 +57,7 @@ c****************************************************************** TYPE(t_stars),INTENT(IN) :: stars TYPE(t_vacuum),INTENT(IN) :: vacuum TYPE(t_sphhar),INTENT(IN) :: sphhar + TYPE(t_potden),INTENT(IN) :: vTot #ifdef CPP_MPI include 'mpif.h' @@ -130,9 +131,7 @@ cccccccccccccccccc local variables cccccccccccccccccccc !!! the parameters for the number of wfs integer :: nwfs !!! the potential in the spheres and the vacuum - real, allocatable :: vr(:,:,:),vz(:,:,:),vrf(:,:,:,:) -!!! auxiliary potentials - complex, allocatable :: vpw(:,:),vzxy(:,:,:,:) + real, allocatable :: vr(:,:,:) !!! bkpts data integer nntot,ikpt_help integer, allocatable :: gb(:,:,:),bpt(:,:) @@ -235,28 +234,15 @@ c specify number of unit-cells that are calculated cccccccccccccccc initialize the potential cccccccccccc - allocate ( vpw(n3d,jspd),vzxy(nmzxyd,odi%n2d-1,2,jspd) ) - allocate ( vz(nmzd,2,jspd),vrf(jmtd,0:nlhd,ntypd,jspd) ) - allocate ( vr(jmtd,ntypd,jspd) ) - - open (8,file='pottot',form='unformatted',status='old') - rewind (8) - - call loddop(stars,vacuum,atoms,sphhar,input,sym, - > 8, - < iter,vrf,vpw,vz,vzxy) - - close (8) + allocate (vr(jmtd,ntypd,jspd)) do jspin = 1,jspins do n = 1, ntype do j = 1,jri(n) - vr(j,n,jspin) = vrf(j,0,n,jspin) + vr(j,n,jspin) = vTot%mt(j,0,n,jspin) enddo enddo enddo - - deallocate ( vpw,vzxy,vrf ) cccccccccccccccc end of the potential part ccccccccccc wannierspin=jspd @@ -718,7 +704,7 @@ c**************************************************************** 110 continue ! end of cycle by spins - deallocate ( vr,vz,kveclo,nv,k1,k2,k3 ) + deallocate ( vr,kveclo,nv,k1,k2,k3 ) deallocate ( ff,gg) #ifdef CPP_MPI