Commit cd027d89 authored by Stefan Rost's avatar Stefan Rost

Merge branch 'develop' of iffgit.fz-juelich.de:fleur/fleur into develop

parents c5a94e1d 48c85c0a
......@@ -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 pol_angle(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)
......
......@@ -24,5 +24,7 @@ cdn_mt/rhosphnlo.f90
cdn_mt/setabc1locdn.f90
cdn_mt/setabc1locdn1.f90
cdn_mt/calcDenCoeffs.f90
cdn_mt/magnMomFromDen.f90
cdn_mt/alignSpinAxisMagn.f90
)
!--------------------------------------------------------------------------------
! Copyright (c) 2018 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
! This file is part of FLEUR and avhttps://gcc.gnu.org/onlinedocs/gfortran/SQRT.htmlailable as free software under the conditions
! of the MIT license as expressed in the LICENSE file in more detail.
!------------------------------------------------------------------------------
! This routine allows to rotate the cdn in a way that the direction of magnetization aligns with the direction of the spin quantization axis.
! This routine also allows to reverse the rotation by using the angles stored in atoms (phi_mt_avg,theta_mt_avg) which are generated by the
! routine magnMomFromDen.
!
! Robin Hilgers, Nov '19
MODULE m_alignSpinAxisMagn
USE m_magnMomFromDen
USE m_types
USE m_flipcdn
USE m_constants
USE m_polangle
CONTAINS
SUBROUTINE rotateMagnetToSpinAxis(vacuum,sphhar,stars&
,sym,oneD,cell,noco,input,atoms,den)
TYPE(t_input), INTENT(INOUT) :: input
TYPE(t_atoms), INTENT(INOUT) :: atoms
TYPE(t_noco), INTENT(INOUT) :: noco
TYPE(t_stars),INTENT(IN) :: stars
TYPE(t_vacuum),INTENT(IN) :: vacuum
TYPE(t_sphhar),INTENT(IN) :: sphhar
TYPE(t_sym),INTENT(IN) :: sym
TYPE(t_oneD),INTENT(IN) :: oneD
TYPE(t_cell),INTENT(IN) :: cell
TYPE(t_potden), INTENT(INOUT) :: den
REAL :: moments(atoms%ntype,3)
REAL :: phiTemp(atoms%ntype),thetaTemp(atoms%ntype),pi
INTEGER :: i
pi=pimach()
!!TEMP
! REAL :: x,y,z
phiTemp=noco%alph
thetaTemp=noco%beta
CALL magnMomFromDen(input,atoms,noco,den,moments)
! DO i=1, atoms%ntype
! IF (abs(atoms%theta_mt_avg(i)).LE. 0.001) THEN
! atoms%phi_mt_avg(i)=0.0
! atoms%theta_mt_avg(i)=0.0
! END IF
! END DO
!write(*,*) "mx1"
!write(*,*) moments(1,1)
!write(*,*) "mz1"
!write(*,*) moments(1,3)
!write(*,*) "mx2"
!write(*,*) moments(2,1)
!write(*,*) "mz2"
!write(*,*) moments(2,3)
CALL flipcdn(atoms,input,vacuum,sphhar,stars,sym,noco,oneD,cell,-atoms%phi_mt_avg,-atoms%theta_mt_avg,den)
!write (*,*)"mx my mz"
!CALL sphericaltocart(SQRT(moments(1,1)**2+moments(1,2)**2+moments(1,3)**2),thetaTemp(1),phiTemp(1),x,y,z)
!write(*,*) x,y,z
!CALL sphericaltocart(SQRT(moments(2,1)**2+moments(2,2)**2+moments(2,3)**2),thetaTemp(2),phiTemp(2),x,y,z)
!write(*,*) x,y,z
!write(*,*) "atoms%phi_mt_avg"
!!write(*,*) atoms%phi_mt_avg
!write(*,*) "atoms%theta_mt_avg"
!write(*,*) atoms%theta_mt_avg
noco%alph=mod(atoms%phi_mt_avg+phiTemp,2*pimach())
noco%beta=mod(atoms%theta_mt_avg+thetaTemp,2*pimach())
atoms%phi_mt_avg=noco%alph
atoms%theta_mt_avg=noco%beta
DO i=1, atoms%ntype
IF(noco%alph(i)<0) noco%alph(i)=noco%alph(i)+2*pi
IF(noco%beta(i)<0) THEN
noco%beta(i)=-noco%beta(i)
noco%alph=noco%alph+pi
END IF
IF(noco%beta(i)>pi) THEN
noco%beta(i)=pi-mod(noco%beta(i),pi)
noco%alph(i)=noco%alph(i)+pi
END IF
noco%alph=mod(noco%alph,2*pi)
End Do
write(*,*) "Noco Phi"
write(*,*) noco%alph
write(*,*) "Noco Theta"
write(*,*) noco%beta
END SUBROUTINE rotateMagnetToSpinAxis
SUBROUTINE rotateMagnetFromSpinAxis(noco,vacuum,sphhar,stars&
,sym,oneD,cell,input,atoms,den,inDen)
TYPE(t_input), INTENT(INOUT) :: input
TYPE(t_atoms), INTENT(INOUT) :: atoms
TYPE(t_noco), INTENT(INOUT) :: noco
TYPE(t_stars),INTENT(IN) :: stars
TYPE(t_vacuum),INTENT(IN) :: vacuum
TYPE(t_sphhar),INTENT(IN) :: sphhar
TYPE(t_sym),INTENT(IN) :: sym
TYPE(t_oneD),INTENT(IN) :: oneD
TYPE(t_cell),INTENT(IN) :: cell
TYPE(t_potden), INTENT(INOUT) :: den, inDen
CALL flipcdn(atoms,input,vacuum,sphhar,stars,sym,noco,oneD,cell,atoms%phi_mt_avg,atoms%theta_mt_avg,den)
CALL flipcdn(atoms,input,vacuum,sphhar,stars,sym,noco,oneD,cell,atoms%phi_mt_avg,atoms%theta_mt_avg,inDen)
atoms%flipSpinPhi=0
atoms%flipSpinTheta=0
noco%alph=0
noco%beta=0
END SUBROUTINE rotateMagnetFromSpinAxis
END MODULE m_alignSpinAxisMagn
......@@ -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
......
!--------------------------------------------------------------------------------
! Copyright (c) 2018 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
! This file is part of FLEUR and avhttps://gcc.gnu.org/onlinedocs/gfortran/SQRT.htmlailable as free software under the conditions
! of the MIT license as expressed in the LICENSE file in more detail.
!------------------------------------------------------------------------------
! This routine calculates the magnetic moments and the corresponding directions
! (angles) according to the Atoms in the system.
!
!
! Robin Hilgers, Nov '19
MODULE m_magnMomFromDen
CONTAINS
SUBROUTINE magnMomFromDen(input,atoms,noco,den,moments)
USE m_constants
USE m_types
USE m_intgr
USE m_juDFT
USE m_polangle
IMPLICIT NONE
TYPE(t_input), INTENT(IN) :: input
TYPE(t_atoms), INTENT(INOUT) :: atoms
TYPE(t_noco), INTENT(IN) :: noco
TYPE(t_potden),INTENT(IN) :: den
REAL, INTENT(OUT) :: moments(atoms%ntype,3)
INTEGER :: jsp,i,j
REAL :: mx,my,mz
REAL, ALLOCATABLE :: dummyResults(:,:)
ALLOCATE(dummyResults(SIZE(den%mt,3),SIZE(den%mt,4)))
IF(noco%l_mtNocoPot) THEN
jsp=4
ELSE
jsp=input%jspins
END IF
!!Loop over Spins and Atoms
DO i=1, atoms%ntype
DO j=1, jsp
!!Integration over r
CALL intgr3(den%mt(:,0,i,j), atoms%rmsh(:,i),atoms%dx(i),atoms%jri(i),dummyResults(i,j))
!!Considering Lattice harmonics integral (Only L=0 component does not vanish and has a factor of sqrt(4*Pi))
dummyResults(i,j)=dummyResults(i,j)*sfp_const
END DO
END DO
!!Assign results
DO i=1 , atoms%ntype
IF (noco%l_mtNocoPot) THEN
moments(i,1:2)=2*dummyResults(i,3:4)
END IF
moments(i,3)=dummyResults(i,1)-dummyResults(i,2)
END DO
DEALLOCATE(dummyResults)
!!Calculation of Angles
DO i=1 , atoms%ntype
mx=moments(i,1)
my=moments(i,2)
mz=moments(i,3)
CALL pol_angle(mx,my,mz,atoms%theta_mt_avg(i),atoms%phi_mt_avg(i))
IF(mx<0) atoms%theta_mt_avg(i)=-atoms%theta_mt_avg(i)
ENDDO
END SUBROUTINE magnMomFromDen
END MODULE m_magnMomFromDen
......@@ -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
......
......@@ -41,7 +41,7 @@ CONTAINS
DO jsp=1,MERGE(4,input%jspins,noco%l_mtNocoPot)
!CALL tlmplm_cholesky(sphhar,atoms,DIMENSION,enpara, jsp,1,mpi,vTot%mt(:,0,1,jsp),input,vTot%mmpMat, td,ud)
CALL tlmplm_cholesky(sphhar,atoms,noco,enpara,jsp,jsp,mpi,vTot,input,td,ud)
CALL tlmplm_cholesky(sphhar,atoms,noco,enpara,jsp,mpi,vTot,input,td,ud)
IF (input%l_f) CALL write_tlmplm(td,vTot%mmpMat,atoms%n_u>0,jsp,jsp,input%jspins)
END DO
CALL timestop("tlmplm")
......
MODULE m_tlmplm
use m_judft
IMPLICIT NONE
!*********************************************************************
! sets up the local Hamiltonian, i.e. the Hamiltonian in the
......@@ -7,7 +7,7 @@ MODULE m_tlmplm
!*********************************************************************
CONTAINS
SUBROUTINE tlmplm(n,sphhar,atoms,enpara,&
jspin,jsp,mpi,v,input,td,ud)
jspin,mpi,v,input,td,ud)
USE m_constants
USE m_intgr, ONLY : intgr3
USE m_genMTBasis
......@@ -25,7 +25,7 @@ CONTAINS
TYPE(t_tlmplm),INTENT(INOUT) :: td
TYPE(t_usdus),INTENT(INOUT) :: ud
INTEGER, INTENT (IN) :: n,jspin,jsp !atom index,physical spin&spin index for data
INTEGER, INTENT (IN) :: n,jspin !atom index,physical spin&spin index for data
REAL, ALLOCATABLE :: dvd(:,:),dvu(:,:),uvd(:,:),uvu(:,:),f(:,:,:,:),g(:,:,:,:),x(:),flo(:,:,:)
INTEGER,ALLOCATABLE :: indt(:)
......@@ -35,7 +35,7 @@ CONTAINS
COMPLEX :: cil
REAL :: temp
INTEGER i,l,l2,lamda,lh,lm,lmin,lmin0,lmp,lmpl,lmplm,lmx,lmxx,lp,info,in
INTEGER lp1,lpl ,mem,mems,mp,mu,nh,na,m,nsym,s,i_u,jspin1,jspin2
INTEGER lp1,lpl ,mem,mems,mp,mu,nh,na,m,nsym,s,i_u,jspin1,jspin2,jsp
ALLOCATE( dvd(0:atoms%lmaxd*(atoms%lmaxd+3)/2,0:sphhar%nlhd ))
ALLOCATE( dvu(0:atoms%lmaxd*(atoms%lmaxd+3)/2,0:sphhar%nlhd ))
......@@ -48,7 +48,7 @@ CONTAINS
ALLOCATE( vr0(SIZE(v%mt,1),0:SIZE(v%mt,2)-1))
jsp=jspin
vr0=v%mt(:,:,n,jsp)
IF (jsp<3) vr0(:,0)=0.0
......@@ -184,8 +184,9 @@ CONTAINS
!---> set up the t-matrices for the local orbitals,
!---> if there are any
IF (atoms%nlo(n).GE.1) THEN
CALL tlo(atoms,sphhar,jspin,jsp,n,enpara,1,input,v%mt(1,0,n,jsp),&
na,flo,f(:,:,:,jspin),g(:,:,:,jspin),ud, ud%uuilon(:,:,jspin),ud%duilon(:,:,jspin),ud%ulouilopn(:,:,:,jspin), td)
IF (jspin>3) call judft_error("l_mtnocoPot=T and LOs not supported.")
CALL tlo(atoms,sphhar,jspin,jsp,n,enpara,1,input,v%mt(1,0,n,jsp),&
na,flo,f(:,:,:,jspin),g(:,:,:,jspin),ud, ud%uuilon(:,:,jspin),ud%duilon(:,:,jspin),ud%ulouilopn(:,:,:,jspin), td)
ENDIF
END SUBROUTINE tlmplm
......
......@@ -9,7 +9,7 @@ MODULE m_tlmplm_cholesky
!*********************************************************************
CONTAINS
SUBROUTINE tlmplm_cholesky(sphhar,atoms,noco,enpara,&
jspin,jsp,mpi,v,input,td,ud)
jspin,mpi,v,input,td,ud)
USE m_tlmplm
USE m_types
IMPLICIT NONE
......@@ -21,7 +21,7 @@ CONTAINS
TYPE(t_enpara),INTENT(IN) :: enpara
! ..
! .. Scalar Arguments ..
INTEGER, INTENT (IN) :: jspin,jsp !physical spin&spin index for data
INTEGER, INTENT (IN) :: jspin !physical spin&spin index for data
! ..
TYPE(t_potden),INTENT(IN) :: v
TYPE(t_tlmplm),INTENT(INOUT) :: td
......@@ -31,7 +31,7 @@ CONTAINS
! .. Local Scalars ..
REAL temp
INTEGER i,l,lm,lmin,lmin0,lmp,lmplm,lp,info,in
INTEGER lpl ,mp,n,m,s,i_u
INTEGER lpl ,mp,n,m,s,i_u, jsp
LOGICAL OK
! ..
! .. Local Arrays ..
......@@ -42,6 +42,7 @@ CONTAINS
! ..e_shift
jsp=jspin
td%e_shift(:,jsp)=0.0
IF (jsp<3) td%e_shift(:,jsp)=e_shift_min
......@@ -59,7 +60,7 @@ CONTAINS
!$OMP PRIVATE(OK,s,in,info)&
!$OMP SHARED(atoms,jspin,jsp,sphhar,enpara,td,ud,v,mpi,input)
DO n = 1,atoms%ntype
CALL tlmplm(n,sphhar,atoms,enpara,jspin,jsp,mpi,v,input,td,ud)
CALL tlmplm(n,sphhar,atoms,enpara,jspin,mpi,v,input,td,ud)
OK=.FALSE.
cholesky_loop:DO WHILE(.NOT.OK)
td%h_loc(:,:,n,jsp)=0.0
......
......@@ -64,7 +64,6 @@
! ---> Interstitial part
DO j = 1,np
IF (.NOT.oneD%odi%d1) THEN
!CALL cotra1(p(:,j),rcc,cell%bmat)
rcc=MATMUL(cell%bmat,p(:,j))/tpi_const
CALL starf3(&
& sym%nop,stars%ng3,sym%symor,stars%kv3,sym%mrot,sym%tau,p(:,j),sym%invtab,&
......@@ -72,7 +71,6 @@
ENDIF
!
IF (oneD%odi%d1) THEN
!CALL cotra1(p(:,j),rcc,cell%bmat)
rcc=MATMUL(cell%bmat,p(:,j))/tpi_const
CALL starf3(&
& sym%nop,stars%ng3,sym%symor,stars%kv3,sym%mrot,sym%tau,rcc,sym%invtab,&
......@@ -111,12 +109,10 @@
!+odim
END IF
IF (oneD%odi%d1) THEN
!CALL cotra1(p(:,j),rcc,cell%bmat)
rcc=MATMUL(cell%bmat,p(:,j))/tpi_const
WRITE (6,FMT=8020) rcc,(p(i,j),i=1,3),v1(j),v2(j)
ELSE
!CALL cotra0(p(1,j),rcc,cell%amat)
rcc=MATMUL(cell%amat,p(:,j))
WRITE (6,FMT=8020) (p(i,j),i=1,3),rcc,v1(j),v2(j)
ENDIF
......@@ -127,7 +123,6 @@
ENDIF
! ----> interstitial part
DO j = 1,np
!CALL cotra1(p(1,j),rcc,cell%bmat)
rcc=MATMUL(cell%bmat,p(:,j))/tpi_const
CALL starf3(&
......@@ -159,7 +154,6 @@
ENDDO
! new
IF (nopa.NE.1) THEN
!CALL cotra1(x,rcc,cell%bmat) ! switch to internal units
rcc=MATMUL(cell%bmat,x)/tpi_const
DO i = 1,3 ! rotate into representative
......@@ -172,7 +166,6 @@
END IF
ENDDO
ENDDO
!CALL cotra0(ri,x,cell%amat) !switch back to cartesian units
x=MATMUL(cell%amat,ri)
END IF
......@@ -192,7 +185,6 @@
ENDDO
v2(j) = help * ir2
IF (j.LE.8) THEN
!CALL cotra1(p(1,j),rcc,cell%bmat)
rcc=MATMUL(cell%bmat,p(:,j))/tpi_const
WRITE (6,FMT=8020) rcc, (p(i,j),i=1,3),v1(j),v2(j)
......
......@@ -30,6 +30,16 @@ MODULE m_constants
INTEGER, PARAMETER :: POTDEN_TYPE_EnergyDen = 5
INTEGER, PARAMETER :: POTDEN_TYPE_DEN = 1001 ! 1000 < POTDEN_TYPE ==> density
INTEGER, PARAMETER :: PLOT_INPDEN=1
INTEGER, PARAMETER :: PLOT_OUTDEN_Y_CORE=2
INTEGER, PARAMETER :: PLOT_INPDEN_N_CORE=3
INTEGER, PARAMETER :: PLOT_MIXDEN_Y_CORE=4
INTEGER, PARAMETER :: PLOT_MIXDEN_N_CORE=5
INTEGER, PARAMETER :: PLOT_POT_TOT=7
INTEGER, PARAMETER :: PLOT_POT_EXT=8
INTEGER, PARAMETER :: PLOT_POT_COU=9
INTEGER, PARAMETER :: PLOT_POT_VXC=10
CHARACTER(2),DIMENSION(0:103),PARAMETER :: namat_const=(/&
'va',' H','He','Li','Be',' B',' C',' N',' O',' F','Ne',&
'Na','Mg','Al','Si',' P',' S','Cl','Ar',' K','Ca','Sc','Ti',&
......
......@@ -57,9 +57,7 @@
! ----> rotate n1 and n2 by symmetry element and form the cross-product
! of the rotated vectors (nn1,nn2) --> ssqa
!
! CALL cotra0(n1,nn1,rrot)
nn1=matmul(rrot,n1)
! CALL cotra0(n2,nn2,rrot)
nn2=matmul(rrot,n2)
CALL cross(nn1,nn2,
......
......@@ -49,7 +49,6 @@
! ----> rotate qss by symmetry element and form the dot-product
! with unrotated vector (q1 . qss)
!
! CALL cotra3(qss,q1,rrot)
q1=matmul(qss,rrot)
!
! ----> if qss is unchanged, accept this symmetry element
......
......@@ -40,7 +40,6 @@
ALLOCATE ( rsyp(3,nosyp),del(nosyp),d(nosyp),nk(nosyp) )
DO i = 1,nosyp
syp1(:) = syp(:,i)
!CALL cotra3(syp1,rsyp1,bmat)
rsyp1=matmul(syp1,bmat)
rsyp(:,i) = rsyp1(:)
ENDDO
......
......@@ -736,7 +736,6 @@
pt_rel(1) = REAL(i-1)/nx
DO j = 1, ny+1
pt_rel(2) = REAL(j-1)/ny
!CALL cotra0 (pt_rel, pt_abs, amat)
pt_abs=matmul(amat,pt_rel)
IF (E%dirichlet) THEN
WRITE (748, '(4f12.5,2g16.5)')&
......@@ -881,7 +880,6 @@
& * nstr2(k)/(3*k1d*3*k2d)
END IF
END DO ! k
!CALL cotra0 (pt_rel, pt_abs, amat)
pt_abs=matmul(amat,pt_rel)
WRITE (754,'(4f14.7,3g16.7,2i6)')&
& pt_abs(1:2),pt_rel(1:2),&
......
......@@ -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) )
......
......@@ -333,7 +333,6 @@
!
! Transform intern coordinates to cartesian:
!
!CALL cotra0(atoms%taual(1,na),atoms%pos(1,na),cell%amat)
atoms%pos(:,na)=MATMUL(cell%amat,atoms%taual(:,na))
ENDDO ! l.o. equivalent atoms (n1)
ENDDO ! loop over atom-types (n)
......