Commit 4d561576 authored by Robin Hilgers's avatar Robin Hilgers

Merge branch 'plot' into source_free

parents 9b23d5db f32467d1
......@@ -36,7 +36,7 @@ CONTAINS
! .. Local Scalars ..
INTEGER iri
REAL b_xavh,scale,b_con_outx,b_con_outy,mx,my,mz,&
& alphh,betah,mz_tmp,mx_mix,my_mix,mz_mix
& alphh,betah,mz_tmp,mx_mix,my_mix,mz_mix,absmag
REAL rho11,rho22, alphdiff
COMPLEX rho21
! ..
......@@ -56,11 +56,12 @@ CONTAINS
mx = 2*REAL(qa21(itype))
my = 2*AIMAG(qa21(itype))
mz = chmom(itype,1) - chmom(itype,2)
WRITE (6,8025) mx,my
absmag=SQRT(mx*mx+my*my+mz*mz)
WRITE (6,8025) mx,my,mz,absmag
!---> determine the polar angles of the moment vector in the local frame
CALL sphcoord(mx,my,mz,betah,alphh)
WRITE (6,8026) betah,alphh
8025 FORMAT(2x,'--> local frame: ','mx=',f9.5,' my=',f9.5)
8025 FORMAT(2x,'--> local frame: ','mx=',f9.5,' my=',f9.5,' mz=',f9.5,' |m|=',f9.5)
8026 FORMAT(2x,'-->',10x,' delta beta=',f9.5,&
& ' delta alpha=',f9.5)
......
......@@ -191,7 +191,7 @@ CONTAINS
!rho21(j,0,itype) = rho21(j,0,itype)+ conjg(cs)/(atoms%neq(itype)*sfp_const)
rho21=CONJG(cs)/(atoms%neq(itype)*sfp_const)
rho(j,0,itype,3)=rho(j,0,itype,3)+REAL(rho21)
rho(j,0,itype,4)=rho(j,0,itype,4)+imag(rho21)
rho(j,0,itype,4)=rho(j,0,itype,4)+aimag(rho21)
ENDDO
ENDDO
......@@ -210,7 +210,7 @@ CONTAINS
!rho21(j,lh,itype)= rho21(j,lh,itype)+ CONJG(cs)/atoms%neq(itype)
rho21=CONJG(cs)/atoms%neq(itype)
rho(j,lh,itype,3)=rho(j,lh,itype,3)+REAL(rho21)
rho(j,lh,itype,4)=rho(j,lh,itype,4)+imag(rho21)
rho(j,lh,itype,4)=rho(j,lh,itype,4)+aimag(rho21)
ENDDO
ENDDO
ENDDO
......
......@@ -198,7 +198,7 @@ CONTAINS
REAL,ALLOCATABLE :: gkrot(:,:)
LOGICAL :: l_apw
ALLOCATE(c_ph(maxval(lapw%nv),MERGE(2,1,noco%l_ss)))
ALLOCATE(c_ph(maxval(lapw%nv),MERGE(2,1,noco%l_ss.or.noco%l_mtNocoPot)))
ALLOCATE(gkrot(3,maxval(lapw%nv)))
lmax=MERGE(atoms%lnonsph(n),atoms%lmax(n),l_nonsph)
......
......@@ -169,7 +169,7 @@ CONTAINS
fj(k,l,ispin,intspin) = 1.0*con1 * ff / usdus%us(l,n,ispin)
gj(k,l,ispin,intspin) = 0.0
ELSE
IF (noco%l_constr.or.l_socfirst) THEN
IF (noco%l_constr.or.l_socfirst.OR.noco%l_mtNocoPot) THEN
DO jspin = 1, input%jspins
fj(k,l,jspin,intspin) = ws(jspin) * ( usdus%uds(l,n,jspin)*gg - usdus%duds(l,n,jspin)*ff )
gj(k,l,jspin,intspin) = ws(jspin) * ( usdus%dus(l,n,jspin)*ff - usdus%us(l,n,jspin)*gg )
......
......@@ -41,7 +41,7 @@ CONTAINS
CALL hmat_tmp%clear()
!The spin1,2 matrix is calculated(real part of potential)
CALL hsmt_nonsph(n,mpi,sym,atoms,3,1,1,chi_one,noco,cell,lapw,td,&
fj(:,0:,1,:),gj(:,0:,2,:),hmat_tmp)
fj(:,0:,1,:),gj(:,0:,1,:),hmat_tmp)
CALL hsmt_spinor(3,n,noco,chi) !spinor for off-diagonal part
CALL hsmt_distspins(chi,hmat_tmp,hmat)
......@@ -56,7 +56,7 @@ CONTAINS
!The spin1,2 matrix is calculated(imag part of potential)
chi_one=CMPLX(0.,1.)
CALL hsmt_nonsph(n,mpi,sym,atoms,4,1,1,chi_one,noco,cell,lapw,td,&
fj(:,0:,1,:),gj(:,0:,2,:),hmat_tmp)
fj(:,0:,1,:),gj(:,0:,1,:),hmat_tmp)
CALL hsmt_spinor(3,n,noco,chi)
CALL hsmt_distspins(chi,hmat_tmp,hmat)
......
......@@ -201,6 +201,7 @@ CONTAINS
CALL ZHERK("U","N",lapw%nv(iintsp),ab_size,Rchi,CONJG(ab1),SIZE(ab1,1),1.0,hmat%data_c,SIZE(hmat%data_c,1))
ELSE !This is the case of a local off-diagonal contribution.
!It is not Hermitian, so we need to USE zgemm CALL
CALL hsmt_ab(sym,atoms,noco,isp,2,n,na,cell,lapw,fj,gj,ab,ab_size,.TRUE.)
CALL zgemm("N","T",lapw%nv(iintsp),lapw%nv(jintsp),ab_size,chi,CONJG(ab),SIZE(ab,1),&
ab1,SIZE(ab1,1),CMPLX(1.0,0.0),hmat%data_c,SIZE(hmat%data_c,1))
ENDIF
......
......@@ -104,7 +104,7 @@ SUBROUTINE initParallelProcesses(atoms,vacuum,input,stars,sliceplot,banddos,&
ALLOCATE(atoms%jri(atoms%ntype),atoms%dx(atoms%ntype),atoms%rmt(atoms%ntype))
ALLOCATE(atoms%lmax(atoms%ntype),atoms%nlo(atoms%ntype),atoms%lnonsph(atoms%ntype))
ALLOCATE(atoms%ncst(atoms%ntype),atoms%lda_u(4*atoms%ntype))
ALLOCATE(atoms%nflip(atoms%ntype),atoms%bmu(atoms%ntype),atoms%neq(atoms%ntype))
ALLOCATE(atoms%bmu(atoms%ntype),atoms%neq(atoms%ntype))
ALLOCATE(atoms%l_geo(atoms%ntype),atoms%relax(3,atoms%ntype))
ALLOCATE(atoms%taual(3,atoms%nat),atoms%pos(3,atoms%nat))
ALLOCATE(atoms%numStatesProvided(atoms%ntype))
......
......@@ -99,7 +99,7 @@
ALLOCATE (&
& atoms%lmax(atoms%ntype),atoms%ntypsy(atoms%nat),atoms%neq(atoms%ntype),atoms%nlhtyp(atoms%ntype),&
& atoms%rmt(atoms%ntype),atoms%zatom(atoms%ntype),atoms%jri(atoms%ntype),atoms%dx(atoms%ntype), &
& atoms%nlo(atoms%ntype),atoms%llo(atoms%nlod,atoms%ntype),atoms%nflip(atoms%ntype),atoms%bmu(atoms%ntype),&
& atoms%nlo(atoms%ntype),atoms%llo(atoms%nlod,atoms%ntype),atoms%bmu(atoms%ntype),&
& noel(atoms%ntype),vacuum%izlay(vacuum%layerd,2),atoms%ncst(atoms%ntype),atoms%lnonsph(atoms%ntype),&
& atoms%taual(3,atoms%nat),atoms%pos(3,atoms%nat),&
& atoms%nz(atoms%ntype),atoms%relax(3,atoms%ntype),&
......@@ -359,7 +359,7 @@
CALL parawrite(sym,stars,atoms,sphhar,DIMENSION,vacuum,obsolete,kpts,oneD,input)
DEALLOCATE( sym%mrot,sym%tau,&
& atoms%lmax,atoms%ntypsy,atoms%neq,atoms%nlhtyp,atoms%rmt,atoms%zatom,atoms%jri,atoms%dx,atoms%nlo,atoms%llo,atoms%nflip,atoms%bmu,noel,&
& atoms%lmax,atoms%ntypsy,atoms%neq,atoms%nlhtyp,atoms%rmt,atoms%zatom,atoms%jri,atoms%dx,atoms%nlo,atoms%llo,atoms%bmu,noel,&
& vacuum%izlay,atoms%ncst,atoms%lnonsph,atoms%taual,atoms%pos,atoms%nz,atoms%relax,&
& atoms%l_geo,noco%alph,noco%beta,atoms%lda_u,noco%l_relax,noco%b_con,sphhar%clnu,sphhar%nlh,&
& sphhar%llh,sphhar%nmem,sphhar%mlh,hybrid%select1,hybrid%lcutm1,&
......
......@@ -100,7 +100,7 @@ CONTAINS
ALLOCATE ( atoms%ncv(atoms%ntype),atoms%neq(atoms%ntype),atoms%ngopr(atoms%nat) )
ALLOCATE ( sphhar%nlh(sphhar%ntypsd),sphhar%nmem(0:sphhar%nlhd,sphhar%ntypsd) )
ALLOCATE ( stars%nstr2(stars%ng2),atoms%ntypsy(atoms%nat),stars%nstr(stars%ng3) )
ALLOCATE ( stars%igfft(0:stars%kimax,2),stars%igfft2(0:stars%kimax2,2),atoms%nflip(atoms%ntype) )
ALLOCATE ( stars%igfft(0:stars%kimax,2),stars%igfft2(0:stars%kimax2,2))
ALLOCATE ( atoms%ncst(atoms%ntype) )
ALLOCATE ( vacuum%izlay(vacuum%layerd,2) )
ALLOCATE ( sym%invarop(atoms%nat,sym%nop),sym%invarind(atoms%nat) )
......
......@@ -118,7 +118,9 @@
ALLOCATE(atoms%llo(atoms%nlod,atoms%ntype))
ALLOCATE(atoms%ncst(atoms%ntype))
ALLOCATE(atoms%lnonsph(atoms%ntype))
ALLOCATE(atoms%nflip(atoms%ntype))
ALLOCATE(atoms%flipSpinPhi(atoms%ntype))
ALLOCATE(atoms%flipSpinScale(atoms%ntype))
ALLOCATE(atoms%flipSpinTheta(atoms%ntype))
ALLOCATE(atoms%l_geo(atoms%ntype))
ALLOCATE(atoms%lda_u(atoms%ntype))
ALLOCATE(atoms%bmu(atoms%ntype))
......@@ -139,7 +141,7 @@
input%l_bmt= .false. ; input%eonly = .false.
input%gauss= .false. ; input%tria = .false.
sliceplot%slice= .false. ; input%swsp = .false.
input%lflip= .false. ; banddos%vacdos= .false. ; input%integ = .false.
input%lflip= .false. ; input%l_removeMagnetisationFromInterstitial=.FALSE. ;banddos%vacdos= .false. ; input%integ = .false.
sliceplot%iplot= 0
input%pallst = .false. ; obsolete%lwb = .false. ; vacuum%starcoeff = .false.
input%strho = .false. ; input%l_f = .false. ; atoms%l_geo(:) = .true.
......@@ -150,7 +152,7 @@
sliceplot%kk = 0 ; sliceplot%nnne = 0 ; vacuum%nstars = 0 ; vacuum%nstm = 0
nu = 5 ; vacuum%layerd = 1 ; iofile = 6
ALLOCATE(vacuum%izlay(vacuum%layerd,2))
banddos%ndir = 0 ; vacuum%layers = 0 ; atoms%nflip(:) = 1 ; vacuum%izlay(:,:) = 0
banddos%ndir = 0 ; vacuum%layers = 0 ; vacuum%izlay(:,:) = 0
banddos%e_mcd_lo = -10.0 ; banddos%e_mcd_up = 0.0
atoms%lda_u%l = -1 ; atoms%relax(1:2,:) = 1 ; atoms%relax(:,:) = 1
input%epsdisp = 0.00001 ; input%epsforce = 0.00001 ; input%forcealpha = 1.0 ; input%forcemix = 2 ! BFGS is default.
......@@ -163,7 +165,7 @@
input%l_wann = .FALSE.
input%numBandsKPoints = 240
banddos%unfoldband = .FALSE. ; banddos%s_cell_x = 1 ; banddos%s_cell_y = 1 ; banddos%s_cell_z = 1
atoms%flipSpinTheta(:)=0.0; atoms%flipSpinPhi(:)=0.0; atoms%flipSpinScale=.FALSE.
!+odim
oneD%odd%mb = 0 ; oneD%odd%M = 0 ; oneD%odd%m_cyl = 0 ; oneD%odd%chi = 0 ; oneD%odd%rot = 0
oneD%odd%k3 = 0 ; oneD%odd%n2d= 0 ; oneD%odd%nq2 = 0 ; oneD%odd%nn2d = 0
......
......@@ -132,7 +132,7 @@ MODULE m_cdn_io
END SUBROUTINE printDensityFileInfo
SUBROUTINE readDensity(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,inOrOutCDN,&
SUBROUTINE readDensity(stars,noco,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,inOrOutCDN,&
relCdnIndex,fermiEnergy,l_qfix,den,inFilename)
TYPE(t_stars),INTENT(IN) :: stars
......@@ -142,6 +142,7 @@ MODULE m_cdn_io
TYPE(t_sphhar),INTENT(IN) :: sphhar
TYPE(t_input),INTENT(IN) :: input
TYPE(t_sym),INTENT(IN) :: sym
TYPE(t_noco),INTENT(IN) :: noco
TYPE(t_oneD),INTENT(IN) :: oneD
TYPE(t_potden),INTENT(INOUT) :: den
......@@ -230,12 +231,12 @@ MODULE m_cdn_io
currentStepfunctionIndex,readDensityIndex,lastDensityIndex,inFilename)
CALL readDensityHDF(fileID, input, stars, sphhar, atoms, vacuum, oneD, archiveName, densityType,&
fermiEnergy,l_qfix,l_DimChange,den)
fermiEnergy,l_qfix,l_DimChange,den,noco%l_mtNocoPot)
CALL closeCDNPOT_HDF(fileID)
IF(l_DimChange) THEN
CALL writeDensity(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,inOrOutCDN,&
CALL writeDensity(stars,noco,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,inOrOutCDN,&
1,-1.0,fermiEnergy,l_qfix,den)
END IF
ELSE
......@@ -363,9 +364,10 @@ MODULE m_cdn_io
END SUBROUTINE readDensity
SUBROUTINE writeDensity(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,inOrOutCDN,&
SUBROUTINE writeDensity(stars,noco,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,inOrOutCDN,&
relCdnIndex,distance,fermiEnergy,l_qfix,den,inFilename)
TYPE(t_noco),INTENT(IN) :: noco
TYPE(t_stars),INTENT(IN) :: stars
TYPE(t_vacuum),INTENT(IN) :: vacuum
TYPE(t_atoms),INTENT(IN) :: atoms
......@@ -384,6 +386,7 @@ MODULE m_cdn_io
CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: inFilename
TYPE(t_stars) :: starsTemp
TYPE(t_vacuum) :: vacuumTemp
TYPE(t_atoms) :: atomsTemp
......@@ -497,7 +500,7 @@ MODULE m_cdn_io
CALL writeDensityHDF(input, fileID, archiveName, densityType, previousDensityIndex,&
currentStarsIndex, currentLatharmsIndex, currentStructureIndex,&
currentStepfunctionIndex,date,time,distance,fermiEnergy,l_qfix,&
den%iter+relCdnIndex,den)
den%iter+relCdnIndex,den,noco%l_mtNocoPot)
IF(l_storeIndices) THEN
CALL writeCDNHeaderData(fileID,currentStarsIndex,currentLatharmsIndex,currentStructureIndex,&
......@@ -984,7 +987,7 @@ MODULE m_cdn_io
archiveType = MERGE(CDN_ARCHIVE_TYPE_NOCO_const,CDN_ARCHIVE_TYPE_CDN1_const,noco%l_noco)
!read the current density
CALL den%init(stars,atoms,sphhar,vacuum,noco,input%jspins,POTDEN_TYPE_DEN)
CALL readDensity(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,CDN_INPUT_DEN_const,&
CALL readDensity(stars,noco,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,CDN_INPUT_DEN_const,&
0,fermiEnergy,l_qfix,den)
ENDIF
!Now fix the density
......@@ -1002,7 +1005,7 @@ MODULE m_cdn_io
CALL judft_error("Wrong choice of qfix in input")
END SELECT
!Now write the density to file
IF (mpi%irank==0) CALL writedensity(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,CDN_INPUT_DEN_const,&
IF (mpi%irank==0) CALL writedensity(stars,noco,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,CDN_INPUT_DEN_const,&
0,-1.0,fermiEnergy,l_qfix,den)
#endif
......
......@@ -1539,7 +1539,7 @@ MODULE m_cdnpot_io_hdf
SUBROUTINE writeDensityHDF(input, fileID, archiveName, densityType, previousDensityIndex,&
starsIndex, latharmsIndex, structureIndex, stepfunctionIndex,&
date,time,distance,fermiEnergy,l_qfix,iter,den)
date,time,distance,fermiEnergy,l_qfix,iter,den,l_mtNoco)
TYPE(t_input), INTENT(IN) :: input
TYPE(t_potden), INTENT(IN) :: den
......@@ -1552,6 +1552,7 @@ MODULE m_cdnpot_io_hdf
INTEGER, INTENT (IN) :: date, time, iter
REAL, INTENT (IN) :: fermiEnergy, distance
LOGICAL, INTENT (IN) :: l_qfix
LOGICAL, INTENT (IN) :: l_mtNoco
INTEGER :: i, iVac
INTEGER :: ntype,jmtd,nmzd,nmzxyd,nlhd,ng3,ng2
......@@ -1690,7 +1691,7 @@ MODULE m_cdnpot_io_hdf
dimsInt(:4)=(/jmtd,nlhd+1,ntype,input%jspins/)
CALL h5dopen_f(groupID, 'fr', frSetID, hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),den%mt)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),den%mt(:,:,:,:input%jspins))
CALL h5dclose_f(frSetID, hdfError)
dimsInt(:3)=(/2,ng3,input%jspins/)
......@@ -1751,15 +1752,25 @@ MODULE m_cdnpot_io_hdf
CALL io_write_attreal0(groupID,'fermiEnergy',fermiEnergy)
CALL io_write_attlog0(groupID,'l_qfix',l_qfix)
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
CALL h5dcreate_f(groupID, "fr", H5T_NATIVE_DOUBLE, frSpaceID, frSetID, hdfError)
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),den%mt)
CALL h5dclose_f(frSetID, hdfError)
IF (.NOT.l_mtNoco) THEN
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
CALL h5dcreate_f(groupID, "fr", H5T_NATIVE_DOUBLE, frSpaceID, frSetID, hdfError)
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),den%mt(:,:,:,:input%jspins))
CALL h5dclose_f(frSetID, hdfError)
ELSE
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins+2/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
CALL h5dcreate_f(groupID, "fr", H5T_NATIVE_DOUBLE, frSpaceID, frSetID, hdfError)
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),den%mt(:,:,:,:4))
CALL h5dclose_f(frSetID, hdfError)
END IF
dims(:3)=(/2,ng3,input%jspins/)
dimsInt = dims
CALL h5screate_simple_f(3,dims(:3),fpwSpaceID,hdfError)
......@@ -1856,13 +1867,23 @@ MODULE m_cdnpot_io_hdf
CALL io_write_attreal0(groupID,'fermiEnergy',fermiEnergy)
CALL io_write_attlog0(groupID,'l_qfix',l_qfix)
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
CALL h5dcreate_f(groupID, "fr", H5T_NATIVE_DOUBLE, frSpaceID, frSetID, hdfError)
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),den%mt)
CALL h5dclose_f(frSetID, hdfError)
IF(.NOT.l_mtNoco) THEN
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
CALL h5dcreate_f(groupID, "fr", H5T_NATIVE_DOUBLE, frSpaceID, frSetID, hdfError)
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),den%mt(:,:,:,:input%jspins))
CALL h5dclose_f(frSetID, hdfError)
ELSE
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins+2/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
CALL h5dcreate_f(groupID, "fr", H5T_NATIVE_DOUBLE, frSpaceID, frSetID, hdfError)
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),den%mt(:,:,:,:4))
CALL h5dclose_f(frSetID, hdfError)
END IF
dims(:3)=(/2,ng3,input%jspins/)
dimsInt = dims
......@@ -1946,7 +1967,7 @@ MODULE m_cdnpot_io_hdf
SUBROUTINE writePotentialHDF(input, fileID, archiveName, potentialType,&
starsIndex, latharmsIndex, structureIndex,stepfunctionIndex,&
iter,pot,fpw)
iter,pot,fpw,l_mtNoco)
TYPE(t_input), INTENT(IN) :: input
TYPE(t_potden), INTENT(IN) :: pot
......@@ -1959,7 +1980,7 @@ MODULE m_cdnpot_io_hdf
INTEGER, INTENT (IN) :: iter
COMPLEX, INTENT (IN) :: fpw(:,:)
LOGICAL, INTENT (IN) :: l_mtNoco
INTEGER :: ntype,jmtd,nmzd,nmzxyd,nlhd,ng3,ng2
INTEGER :: nmz, nvac, od_nq2, nmzxy
INTEGER :: hdfError
......@@ -2092,6 +2113,8 @@ MODULE m_cdnpot_io_hdf
ELSE
CALL h5gcreate_f(fileID, TRIM(ADJUSTL(groupName)), groupID, hdfError)
IF (.NOT.l_mtNoco)THEN
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
......@@ -2099,6 +2122,15 @@ MODULE m_cdnpot_io_hdf
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),pot%mt)
CALL h5dclose_f(frSetID, hdfError)
ELSE
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins+2/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
CALL h5dcreate_f(groupID, "fr", H5T_NATIVE_DOUBLE, frSpaceID, frSetID, hdfError)
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),pot%mt)
CALL h5dclose_f(frSetID, hdfError)
END IF
dims(:3)=(/2,ng3,input%jspins/)
dimsInt = dims
......@@ -2141,14 +2173,25 @@ MODULE m_cdnpot_io_hdf
CALL io_write_attint0(archiveID,'iter',iter)
CALL h5gcreate_f(fileID, TRIM(ADJUSTL(groupName)), groupID, hdfError)
IF (.NOT.l_mtNoco)THEN
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
CALL h5dcreate_f(groupID, "fr", H5T_NATIVE_DOUBLE, frSpaceID, frSetID, hdfError)
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),pot%mt)
CALL h5dclose_f(frSetID, hdfError)
ELSE
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins+2/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
CALL h5dcreate_f(groupID, "fr", H5T_NATIVE_DOUBLE, frSpaceID, frSetID, hdfError)
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),pot%mt)
CALL h5dclose_f(frSetID, hdfError)
END IF
dims(:4)=(/jmtd,nlhd+1,ntype,input%jspins/)
dimsInt = dims
CALL h5screate_simple_f(4,dims(:4),frSpaceID,hdfError)
CALL h5dcreate_f(groupID, "fr", H5T_NATIVE_DOUBLE, frSpaceID, frSetID, hdfError)
CALL h5sclose_f(frSpaceID,hdfError)
CALL io_write_real4(frSetID,(/1,1,1,1/),dimsInt(:4),pot%mt)
CALL h5dclose_f(frSetID, hdfError)
dims(:3)=(/2,ng3,input%jspins/)
dimsInt = dims
......@@ -2184,7 +2227,7 @@ MODULE m_cdnpot_io_hdf
END SUBROUTINE writePotentialHDF
SUBROUTINE readDensityHDF(fileID, input, stars, latharms, atoms, vacuum, oneD,&
archiveName, densityType,fermiEnergy,l_qfix,l_DimChange,den)
archiveName, densityType,fermiEnergy,l_qfix,l_DimChange,den,l_mtNoco)
TYPE(t_input),INTENT(IN) :: input
TYPE(t_stars),INTENT(IN) :: stars
......@@ -2200,7 +2243,7 @@ MODULE m_cdnpot_io_hdf
REAL, INTENT (OUT) :: fermiEnergy
LOGICAL, INTENT (OUT) :: l_qfix, l_DimChange
LOGICAL, INTENT (IN) :: l_mtNoco
INTEGER :: starsIndex, latharmsIndex, structureIndex, stepfunctionIndex
INTEGER :: previousDensityIndex, jspins
INTEGER :: ntype,jmtd,nmzd,nmzxyd,nlhd,ng3,ng2
......@@ -2413,14 +2456,25 @@ MODULE m_cdnpot_io_hdf
END IF
den%mt = 0.0
ALLOCATE(frTemp(jmtd,1:nlhd+1,ntype,jspins))
dimsInt(:4)=(/jmtd,nlhd+1,ntype,jspins/)
CALL h5dopen_f(groupID, 'fr', frSetID, hdfError)
CALL io_read_real4(frSetID,(/1,1,1,1/),dimsInt(:4),frTemp)
CALL h5dclose_f(frSetID, hdfError)
den%mt(1:jmtdOut,0:nlhdOut,1:ntypeOut,1:jspinsOut) =&
frTemp(1:jmtdOut,1:nlhdOut+1,1:ntypeOut,1:jspinsOut)
DEALLOCATE(frTemp)
IF (.NOT.l_mtNoco) THEN
ALLOCATE(frTemp(jmtd,1:nlhd+1,ntype,jspins))
dimsInt(:4)=(/jmtd,nlhd+1,ntype,jspins/)
CALL h5dopen_f(groupID, 'fr', frSetID, hdfError)
CALL io_read_real4(frSetID,(/1,1,1,1/),dimsInt(:4),frTemp)
CALL h5dclose_f(frSetID, hdfError)
den%mt(1:jmtdOut,0:nlhdOut,1:ntypeOut,1:jspinsOut) =&
frTemp(1:jmtdOut,1:nlhdOut+1,1:ntypeOut,1:jspinsOut)
DEALLOCATE(frTemp)
ELSE
ALLOCATE(frTemp(jmtd,1:nlhd+1,ntype,4))
dimsInt(:4)=(/jmtd,nlhd+1,ntype,4/)
CALL h5dopen_f(groupID, 'fr', frSetID, hdfError)
CALL io_read_real4(frSetID,(/1,1,1,1/),dimsInt(:4),frTemp)
CALL h5dclose_f(frSetID, hdfError)
den%mt(1:jmtdOut,0:nlhdOut,1:ntypeOut,1:4) =&
frTemp(1:jmtdOut,1:nlhdOut+1,1:ntypeOut,1:4)
DEALLOCATE(frTemp)
END IF
den%pw = CMPLX(0.0,0.0)
ALLOCATE(fpwTemp(ng3,jspins))
......@@ -2517,11 +2571,12 @@ MODULE m_cdnpot_io_hdf
END SUBROUTINE readDensityHDF
SUBROUTINE readPotentialHDF(fileID, archiveName, potentialType,&
iter,fr,fpw,fz,fzxy)
iter,fr,fpw,fz,fzxy,l_mtnoco)
INTEGER(HID_T), INTENT(IN) :: fileID
INTEGER, INTENT(IN) :: potentialType
CHARACTER(LEN=*), INTENT(IN) :: archiveName
LOGICAL , INTENT(IN) :: l_mtNoco
INTEGER, INTENT (OUT) :: iter
......@@ -2611,10 +2666,18 @@ MODULE m_cdnpot_io_hdf
CALL io_read_attint0(groupBID,'ng2',ng2)
CALL h5gclose_f(groupBID, hdfError)
IF (.NOT.l_mtNoco) THEN
dimsInt(:4)=(/jmtd,nlhd+1,ntype,jspins/)
CALL h5dopen_f(groupID, 'fr', frSetID, hdfError)
CALL io_read_real4(frSetID,(/1,1,1,1/),dimsInt(:4),fr)
CALL h5dclose_f(frSetID, hdfError)
ELSE
dimsInt(:4)=(/jmtd,nlhd+1,ntype,jspins+2/)
CALL h5dopen_f(groupID, 'fr', frSetID, hdfError)
CALL io_read_real4(frSetID,(/1,1,1,1/),dimsInt(:4),fr)
CALL h5dclose_f(frSetID, hdfError)
END IF
dimsInt(:3)=(/2,ng3,jspins/)
CALL h5dopen_f(groupID, 'fpw', fpwSetID, hdfError)
......
......@@ -40,10 +40,11 @@ MODULE m_pot_io
CONTAINS
SUBROUTINE readPotential(stars,vacuum,atoms,sphhar,input,sym,archiveType,&
SUBROUTINE readPotential(stars,noco,vacuum,atoms,sphhar,input,sym,archiveType,&
iter,fr,fpw,fz,fzxy)
TYPE(t_stars),INTENT(IN) :: stars
TYPE(t_noco),INTENT(IN) :: noco
TYPE(t_vacuum),INTENT(IN) :: vacuum
TYPE(t_atoms),INTENT(IN) :: atoms
TYPE(t_sphhar),INTENT(IN) :: sphhar
......@@ -103,7 +104,7 @@ MODULE m_pot_io
currentStructureIndex,currentStepfunctionIndex)
CALL readPotentialHDF(fileID, archiveName, potentialType,&
iter,fr,fpw,fz,fzxy)
iter,fr,fpw,fz,fzxy,noco%l_mtNocoPot)
CALL closeCDNPOT_HDF(fileID)
ELSE
......@@ -159,7 +160,7 @@ MODULE m_pot_io
END SUBROUTINE readPotential
SUBROUTINE writePotential(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,&
SUBROUTINE writePotential(stars,noco,vacuum,atoms,cell,sphhar,input,sym,oneD,archiveType,&
iter,pot,fpw)
TYPE(t_stars),INTENT(IN) :: stars
......@@ -169,6 +170,7 @@ MODULE m_pot_io
TYPE(t_sphhar),INTENT(IN) :: sphhar
TYPE(t_input),INTENT(IN) :: input
TYPE(t_sym),INTENT(IN) :: sym
TYPE(t_noco),INTENT(IN) :: noco
TYPE(t_oneD),INTENT(IN) :: oneD
TYPE(t_potden), INTENT(INOUT) :: pot
......@@ -225,7 +227,7 @@ MODULE m_pot_io
END IF
CALL writePotentialHDF(input, fileID, archiveName, potentialType,&
currentStarsIndex, currentLatharmsIndex, currentStructureIndex,&
currentStepfunctionIndex,iter,pot,fpw)
currentStepfunctionIndex,iter,pot,fpw,noco%l_mtNocoPot)
IF(l_storeIndices) THEN
CALL writePOTHeaderData(fileID,currentStarsIndex,currentLatharmsIndex,&
......
......@@ -123,13 +123,15 @@ CONTAINS
INTEGER :: mrotTemp(3,3,48)
REAL :: tauTemp(3,48)
REAL :: bk(3)
LOGICAL :: flipSpin, l_eV, invSym, l_qfix, relaxX, relaxY, relaxZ
LOGICAL :: l_eV, invSym, l_qfix, relaxX, relaxY, relaxZ
LOGICAL :: coreConfigPresent, l_enpara, l_orbcomp, tempBool, l_nocoinp
REAL :: magMom, radius, logIncrement, qsc(3), latticeScale, dr
REAL :: aTemp, zp, rmtmax, sumWeight, ldau_u(4), ldau_j(4), tempReal
REAL :: ldau_phi(4),ldau_theta(4)
REAL :: weightScale, eParamUp, eParamDown
LOGICAL :: l_amf(4)
REAL :: flipSpinPhi,flipSpinTheta
LOGICAL :: flipSpinScale