Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
fleur
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
51
Issues
51
List
Boards
Labels
Service Desk
Milestones
Operations
Operations
Incidents
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
fleur
fleur
Commits
6827f484
Commit
6827f484
authored
May 02, 2018
by
Gregor Michalicek
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename cdnvalKLoop into cdnvalJob
+integrate weights array into t_cdnvalJob type
parent
9a64cbe9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
81 additions
and
69 deletions
+81
-69
cdn/cdnval.F90
cdn/cdnval.F90
+12
-17
main/cdngen.F90
main/cdngen.F90
+4
-4
types/types_cdnval.f90
types/types_cdnval.f90
+65
-48
No files found.
cdn/cdnval.F90
View file @
6827f484
...
...
@@ -10,8 +10,8 @@ USE m_juDFT
CONTAINS
SUBROUTINE
cdnval
(
eig_id
,
mpi
,
kpts
,
jspin
,
sliceplot
,
noco
,
input
,
banddos
,
cell
,
atoms
,
enpara
,
stars
,&
vacuum
,
dimension
,
sphhar
,
sym
,
obsolete
,
vTot
,
oneD
,
coreSpecInput
,
cdnval
KLoop
,
den
,
regCharges
,
dos
,
results
,&
SUBROUTINE
cdnval
(
eig_id
,
mpi
,
kpts
,
jspin
,
noco
,
input
,
banddos
,
cell
,
atoms
,
enpara
,
stars
,&
vacuum
,
dimension
,
sphhar
,
sym
,
obsolete
,
vTot
,
oneD
,
coreSpecInput
,
cdnval
Job
,
den
,
regCharges
,
dos
,
results
,&
moments
,
mcd
,
slab
,
orbcomp
)
!************************************************************************************
...
...
@@ -61,7 +61,6 @@ SUBROUTINE cdnval(eig_id, mpi,kpts,jspin,sliceplot,noco, input,banddos,cell,atom
TYPE
(
t_enpara
),
INTENT
(
IN
)
::
enpara
TYPE
(
t_obsolete
),
INTENT
(
IN
)
::
obsolete
TYPE
(
t_banddos
),
INTENT
(
IN
)
::
banddos
TYPE
(
t_sliceplot
),
INTENT
(
IN
)
::
sliceplot
TYPE
(
t_input
),
INTENT
(
IN
)
::
input
TYPE
(
t_vacuum
),
INTENT
(
IN
)
::
vacuum
TYPE
(
t_noco
),
INTENT
(
IN
)
::
noco
...
...
@@ -73,7 +72,7 @@ SUBROUTINE cdnval(eig_id, mpi,kpts,jspin,sliceplot,noco, input,banddos,cell,atom
TYPE
(
t_atoms
),
INTENT
(
IN
)
::
atoms
TYPE
(
t_coreSpecInput
),
INTENT
(
IN
)
::
coreSpecInput
TYPE
(
t_potden
),
INTENT
(
IN
)
::
vTot
TYPE
(
t_cdnval
KLoop
),
INTENT
(
IN
)
::
cdnvalKLoop
TYPE
(
t_cdnval
Job
),
INTENT
(
IN
)
::
cdnvalJob
TYPE
(
t_potden
),
INTENT
(
INOUT
)
::
den
TYPE
(
t_regionCharges
),
INTENT
(
INOUT
)
::
regCharges
TYPE
(
t_dos
),
INTENT
(
INOUT
)
::
dos
...
...
@@ -170,11 +169,11 @@ SUBROUTINE cdnval(eig_id, mpi,kpts,jspin,sliceplot,noco, input,banddos,cell,atom
skip_tt
=
dot_product
(
enpara
%
skiplo
(:
atoms
%
ntype
,
jspin
),
atoms
%
neq
(:
atoms
%
ntype
))
IF
(
noco
%
l_soc
.OR.
noco
%
l_noco
)
skip_tt
=
2
*
skip_tt
ALLOCATE
(
we
(
MAXVAL
(
cdnval
KLoop
%
noccbd
(:))))
ALLOCATE
(
eig
(
MAXVAL
(
cdnval
KLoop
%
noccbd
(:))))
ALLOCATE
(
we
(
MAXVAL
(
cdnval
Job
%
noccbd
(:))))
ALLOCATE
(
eig
(
MAXVAL
(
cdnval
Job
%
noccbd
(:))))
jsp
=
MERGE
(
1
,
jspin
,
noco
%
l_noco
)
DO
ikpt
=
cdnval
KLoop
%
ikptStart
,
cdnvalKLoop
%
nkptExtended
,
cdnvalKLoop
%
ikptIncrement
DO
ikpt
=
cdnval
Job
%
ikptStart
,
cdnvalJob
%
nkptExtended
,
cdnvalJob
%
ikptIncrement
IF
(
ikpt
.GT.
kpts
%
nkpt
)
THEN
#ifdef CPP_MPI
...
...
@@ -185,17 +184,13 @@ SUBROUTINE cdnval(eig_id, mpi,kpts,jspin,sliceplot,noco, input,banddos,cell,atom
CALL
lapw
%
init
(
input
,
noco
,
kpts
,
atoms
,
sym
,
ikpt
,
cell
,
.false.
,
mpi
)
skip_t
=
skip_tt
noccbd
=
cdnvalKLoop
%
noccbd
(
ikpt
)
nStart
=
cdnvalKLoop
%
nStart
(
ikpt
)
nEnd
=
cdnvalKLoop
%
nEnd
(
ikpt
)
we
=
0.0
we
(
1
:
noccbd
)
=
results
%
w_iks
(
nStart
:
nEnd
,
ikpt
,
jsp
)
IF
(
sliceplot
%
slice
.AND.
input
%
pallst
)
we
(:)
=
kpts
%
wtkpt
(
ikpt
)
we
(:
noccbd
)
=
2.0
*
we
(:
noccbd
)
/
input
%
jspins
! add in spin-doubling factor
noccbd
=
cdnvalJob
%
noccbd
(
ikpt
)
nStart
=
cdnvalJob
%
nStart
(
ikpt
)
nEnd
=
cdnvalJob
%
nEnd
(
ikpt
)
we
(
1
:
noccbd
)
=
cdnvalJob
%
weights
(
1
:
noccbd
,
ikpt
)
eig
(
1
:
noccbd
)
=
results
%
eig
(
nStart
:
nEnd
,
ikpt
,
jsp
)
IF
(
cdnval
KLoop
%
l_evp
)
THEN
IF
(
cdnval
Job
%
l_evp
)
THEN
IF
(
nStart
>
skip_tt
)
skip_t
=
0
IF
(
nEnd
<=
skip_tt
)
skip_t
=
noccbd
IF
((
nStart
<=
skip_tt
)
.AND.
(
nEnd
>
skip_tt
))
skip_t
=
mod
(
skip_tt
,
noccbd
)
...
...
@@ -240,7 +235,7 @@ SUBROUTINE cdnval(eig_id, mpi,kpts,jspin,sliceplot,noco, input,banddos,cell,atom
! perform Brillouin zone integration and summation over the
! bands in order to determine the energy parameters for each atom and angular momentum
CALL
eparas
(
ispin
,
atoms
,
noccbd
,
mpi
,
ikpt
,
noccbd
,
we
,
eig
,&
skip_t
,
cdnval
KLoop
%
l_evp
,
eigVecCoeffs
,
usdus
,
regCharges
,
dos
,
mcd
,
banddos
%
l_mcd
)
skip_t
,
cdnval
Job
%
l_evp
,
eigVecCoeffs
,
usdus
,
regCharges
,
dos
,
mcd
,
banddos
%
l_mcd
)
IF
(
noco
%
l_mperp
.AND.
(
ispin
==
jsp_end
))
CALL
qal_21
(
dimension
,
atoms
,
input
,
noccbd
,
noco
,
eigVecCoeffs
,
denCoeffsOffdiag
,
ikpt
,
dos
)
...
...
main/cdngen.F90
View file @
6827f484
...
...
@@ -75,7 +75,7 @@ SUBROUTINE cdngen(eig_id,mpi,input,banddos,sliceplot,vacuum,&
TYPE
(
t_mcd
)
::
mcd
TYPE
(
t_slab
)
::
slab
TYPE
(
t_orbcomp
)
::
orbcomp
TYPE
(
t_cdnval
KLoop
)
::
cdnvalKLoop
TYPE
(
t_cdnval
Job
)
::
cdnvalJob
!Local Scalars
...
...
@@ -98,9 +98,9 @@ SUBROUTINE cdngen(eig_id,mpi,input,banddos,sliceplot,vacuum,&
jspmax
=
input
%
jspins
IF
(
noco
%
l_mperp
)
jspmax
=
1
DO
jspin
=
1
,
jspmax
CALL
cdnval
KLoop
%
init
(
mpi
,
input
,
kpts
,
banddos
,
noco
,
results
,
jspin
,
sliceplot
)
CALL
cdnval
(
eig_id
,
mpi
,
kpts
,
jspin
,
sliceplot
,
noco
,
input
,
banddos
,
cell
,
atoms
,
enpara
,
stars
,
vacuum
,
dimension
,&
sphhar
,
sym
,
obsolete
,
vTot
,
oneD
,
coreSpecInput
,
cdnval
KLoop
,
outDen
,
regCharges
,
dos
,
results
,
moments
,
mcd
,
slab
,
orbcomp
)
CALL
cdnval
Job
%
init
(
mpi
,
input
,
kpts
,
banddos
,
noco
,
results
,
jspin
,
sliceplot
)
CALL
cdnval
(
eig_id
,
mpi
,
kpts
,
jspin
,
noco
,
input
,
banddos
,
cell
,
atoms
,
enpara
,
stars
,
vacuum
,
dimension
,&
sphhar
,
sym
,
obsolete
,
vTot
,
oneD
,
coreSpecInput
,
cdnval
Job
,
outDen
,
regCharges
,
dos
,
results
,
moments
,
mcd
,
slab
,
orbcomp
)
END
DO
IF
(
mpi
%
irank
.EQ.
0
)
THEN
...
...
types/types_cdnval.f90
View file @
6827f484
...
...
@@ -118,7 +118,7 @@ PRIVATE
PROCEDURE
,
PASS
::
init
=>
orbcomp_init
END
TYPE
t_orbcomp
TYPE
t_cdnval
KLoop
TYPE
t_cdnval
Job
INTEGER
::
ikptIncrement
INTEGER
::
ikptStart
...
...
@@ -128,10 +128,11 @@ PRIVATE
INTEGER
,
ALLOCATABLE
::
noccbd
(:)
INTEGER
,
ALLOCATABLE
::
nStart
(:)
INTEGER
,
ALLOCATABLE
::
nEnd
(:)
REAL
,
ALLOCATABLE
::
weights
(:,:)
CONTAINS
PROCEDURE
,
PASS
::
init
=>
cdnval
KLoop
_init
END
TYPE
t_cdnval
KLoop
PROCEDURE
,
PASS
::
init
=>
cdnval
Job
_init
END
TYPE
t_cdnval
Job
TYPE
t_gVacMap
...
...
@@ -143,7 +144,7 @@ PRIVATE
END
TYPE
t_gVacMap
PUBLIC
t_orb
,
t_denCoeffs
,
t_slab
,
t_eigVecCoeffs
PUBLIC
t_mcd
,
t_moments
,
t_orbcomp
,
t_cdnval
KLoop
,
t_gVacMap
PUBLIC
t_mcd
,
t_moments
,
t_orbcomp
,
t_cdnval
Job
,
t_gVacMap
CONTAINS
...
...
@@ -444,7 +445,7 @@ SUBROUTINE orbcomp_init(thisOrbcomp,input,banddos,dimension,atoms,kpts)
END
SUBROUTINE
orbcomp_init
SUBROUTINE
cdnval
KLoop_init
(
thisCdnvalKLoop
,
mpi
,
input
,
kpts
,
banddos
,
noco
,
results
,
jspin
,
sliceplot
)
SUBROUTINE
cdnval
Job_init
(
thisCdnvalJob
,
mpi
,
input
,
kpts
,
banddos
,
noco
,
results
,
jspin
,
sliceplot
)
USE
m_types_setup
USE
m_types_kpts
...
...
@@ -453,7 +454,7 @@ SUBROUTINE cdnvalKLoop_init(thisCdnvalKLoop,mpi,input,kpts,banddos,noco,results,
IMPLICIT
NONE
CLASS
(
t_cdnval
KLoop
),
INTENT
(
INOUT
)
::
thisCdnvalKLoop
CLASS
(
t_cdnval
Job
),
INTENT
(
INOUT
)
::
thisCdnvalJob
TYPE
(
t_mpi
),
INTENT
(
IN
)
::
mpi
TYPE
(
t_input
),
INTENT
(
IN
)
::
input
TYPE
(
t_kpts
),
INTENT
(
IN
)
::
kpts
...
...
@@ -464,54 +465,54 @@ SUBROUTINE cdnvalKLoop_init(thisCdnvalKLoop,mpi,input,kpts,banddos,noco,results,
INTEGER
,
INTENT
(
IN
)
::
jspin
INTEGER
::
jsp
,
iBand
,
ikpt
,
nslibd
,
noccbd_l
INTEGER
::
jsp
,
iBand
,
ikpt
,
nslibd
,
noccbd_l
,
noccbd
,
nStart
,
nEnd
thisCdnval
KLoop
%
l_evp
=
.FALSE.
thisCdnval
Job
%
l_evp
=
.FALSE.
IF
(
kpts
%
nkpt
<
mpi
%
isize
)
THEN
thisCdnval
KLoop
%
l_evp
=
.TRUE.
thisCdnval
KLoop
%
nkptExtended
=
kpts
%
nkpt
thisCdnval
KLoop
%
ikptStart
=
1
thisCdnval
KLoop
%
ikptIncrement
=
1
thisCdnval
Job
%
l_evp
=
.TRUE.
thisCdnval
Job
%
nkptExtended
=
kpts
%
nkpt
thisCdnval
Job
%
ikptStart
=
1
thisCdnval
Job
%
ikptIncrement
=
1
ELSE
! the number of iterations is adjusted to the number of MPI processes to synchronize RMA operations
thisCdnval
KLoop
%
nkptExtended
=
(
kpts
%
nkpt
/
mpi
%
isize
+
1
)
*
mpi
%
isize
thisCdnval
KLoop
%
ikptStart
=
mpi
%
irank
+
1
thisCdnval
KLoop
%
ikptIncrement
=
mpi
%
isize
thisCdnval
Job
%
nkptExtended
=
(
kpts
%
nkpt
/
mpi
%
isize
+
1
)
*
mpi
%
isize
thisCdnval
Job
%
ikptStart
=
mpi
%
irank
+
1
thisCdnval
Job
%
ikptIncrement
=
mpi
%
isize
END
IF
IF
(
ALLOCATED
(
thisCdnval
KLoop
%
noccbd
))
DEALLOCATE
(
thisCdnvalKLoop
%
noccbd
)
IF
(
ALLOCATED
(
thisCdnval
KLoop
%
nStart
))
DEALLOCATE
(
thisCdnvalKLoop
%
nStart
)
IF
(
ALLOCATED
(
thisCdnval
KLoop
%
nEnd
))
DEALLOCATE
(
thisCdnvalKLoop
%
nEnd
)
IF
(
ALLOCATED
(
thisCdnval
Job
%
noccbd
))
DEALLOCATE
(
thisCdnvalJob
%
noccbd
)
IF
(
ALLOCATED
(
thisCdnval
Job
%
nStart
))
DEALLOCATE
(
thisCdnvalJob
%
nStart
)
IF
(
ALLOCATED
(
thisCdnval
Job
%
nEnd
))
DEALLOCATE
(
thisCdnvalJob
%
nEnd
)
ALLOCATE
(
thisCdnval
KLoop
%
noccbd
(
kpts
%
nkpt
))
ALLOCATE
(
thisCdnval
KLoop
%
nStart
(
kpts
%
nkpt
))
ALLOCATE
(
thisCdnval
KLoop
%
nEnd
(
kpts
%
nkpt
))
ALLOCATE
(
thisCdnval
Job
%
noccbd
(
kpts
%
nkpt
))
ALLOCATE
(
thisCdnval
Job
%
nStart
(
kpts
%
nkpt
))
ALLOCATE
(
thisCdnval
Job
%
nEnd
(
kpts
%
nkpt
))
thisCdnval
KLoop
%
noccbd
=
0
thisCdnval
KLoop
%
nStart
=
1
thisCdnval
KLoop
%
nEnd
=
-1
thisCdnval
Job
%
noccbd
=
0
thisCdnval
Job
%
nStart
=
1
thisCdnval
Job
%
nEnd
=
-1
jsp
=
MERGE
(
1
,
jspin
,
noco
%
l_noco
)
! determine bands to be used for each k point, MPI process
DO
ikpt
=
thisCdnval
KLoop
%
ikptStart
,
kpts
%
nkpt
,
thisCdnvalKLoop
%
ikptIncrement
DO
ikpt
=
thisCdnval
Job
%
ikptStart
,
kpts
%
nkpt
,
thisCdnvalJob
%
ikptIncrement
DO
iBand
=
1
,
results
%
neig
(
ikpt
,
jsp
)
IF
((
results
%
w_iks
(
iBand
,
ikpt
,
jsp
)
.GE.
1.e-8
)
.OR.
input
%
pallst
)
THEN
thisCdnval
KLoop
%
noccbd
(
ikpt
)
=
thisCdnvalKLoop
%
noccbd
(
ikpt
)
+
1
thisCdnval
Job
%
noccbd
(
ikpt
)
=
thisCdnvalJob
%
noccbd
(
ikpt
)
+
1
END
IF
END
DO
IF
(
banddos
%
dos
)
thisCdnval
KLoop
%
noccbd
(
ikpt
)
=
results
%
neig
(
ikpt
,
jsp
)
IF
(
banddos
%
dos
)
thisCdnval
Job
%
noccbd
(
ikpt
)
=
results
%
neig
(
ikpt
,
jsp
)
thisCdnval
KLoop
%
nStart
(
ikpt
)
=
1
thisCdnval
KLoop
%
nEnd
(
ikpt
)
=
thisCdnvalKLoop
%
noccbd
(
ikpt
)
thisCdnval
Job
%
nStart
(
ikpt
)
=
1
thisCdnval
Job
%
nEnd
(
ikpt
)
=
thisCdnvalJob
%
noccbd
(
ikpt
)
!---> if slice, only certain bands are taken into account
IF
(
PRESENT
(
sliceplot
))
THEN
IF
(
sliceplot
%
slice
.AND.
thisCdnval
KLoop
%
noccbd
(
ikpt
)
.GT.
0
)
THEN
thisCdnval
KLoop
%
nStart
(
ikpt
)
=
1
thisCdnval
KLoop
%
nEnd
(
ikpt
)
=
-1
IF
(
sliceplot
%
slice
.AND.
thisCdnval
Job
%
noccbd
(
ikpt
)
.GT.
0
)
THEN
thisCdnval
Job
%
nStart
(
ikpt
)
=
1
thisCdnval
Job
%
nEnd
(
ikpt
)
=
-1
IF
(
mpi
%
irank
==
0
)
WRITE
(
16
,
FMT
=*
)
'NNNE'
,
sliceplot
%
nnne
IF
(
mpi
%
irank
==
0
)
WRITE
(
16
,
FMT
=*
)
'sliceplot%kk'
,
sliceplot
%
kk
nslibd
=
0
...
...
@@ -526,7 +527,7 @@ SUBROUTINE cdnvalKLoop_init(thisCdnvalKLoop,mpi,input,kpts,banddos,noco,results,
iBand
=
iBand
+
1
IF
(
iBand
.GT.
results
%
neig
(
ikpt
,
jsp
))
EXIT
END
DO
thisCdnval
KLoop
%
nStart
(
ikpt
)
=
iBand
thisCdnval
Job
%
nStart
(
ikpt
)
=
iBand
IF
(
iBand
.LE.
results
%
neig
(
ikpt
,
jsp
))
THEN
DO
WHILE
(
results
%
eig
(
iBand
,
ikpt
,
jsp
)
.LE.
sliceplot
%
e2s
)
iBand
=
iBand
+
1
...
...
@@ -534,8 +535,8 @@ SUBROUTINE cdnvalKLoop_init(thisCdnvalKLoop,mpi,input,kpts,banddos,noco,results,
END
DO
iBand
=
iBand
-
1
END
IF
thisCdnval
KLoop
%
nEnd
(
ikpt
)
=
iBand
nslibd
=
MAX
(
0
,
thisCdnval
KLoop
%
nEnd
(
ikpt
)
-
thisCdnvalKLoop
%
nStart
(
ikpt
)
+
1
)
thisCdnval
Job
%
nEnd
(
ikpt
)
=
iBand
nslibd
=
MAX
(
0
,
thisCdnval
Job
%
nEnd
(
ikpt
)
-
thisCdnvalJob
%
nStart
(
ikpt
)
+
1
)
IF
(
mpi
%
irank
==
0
)
WRITE
(
16
,
'(a,i3)'
)
' eigenvalues in sliceplot%slice:'
,
nslibd
ELSE
IF
(
sliceplot
%
kk
.EQ.
ikpt
)
THEN
IF
(
mpi
%
irank
==
0
)
WRITE
(
16
,
FMT
=
'(a,i2)'
)
' sliceplot%slice: k-point nr.'
,
ikpt
...
...
@@ -543,15 +544,15 @@ SUBROUTINE cdnvalKLoop_init(thisCdnvalKLoop,mpi,input,kpts,banddos,noco,results,
IF
(
mpi
%
irank
==
0
)
WRITE
(
16
,
FMT
=
'(a,i5,f10.5)'
)
'slice: eigenvalue nr.'
,&
sliceplot
%
nnne
,
results
%
eig
(
sliceplot
%
nnne
,
ikpt
,
jsp
)
nslibd
=
1
thisCdnval
KLoop
%
nStart
(
ikpt
)
=
sliceplot
%
nnne
thisCdnval
KLoop
%
nEnd
(
ikpt
)
=
sliceplot
%
nnne
thisCdnval
Job
%
nStart
(
ikpt
)
=
sliceplot
%
nnne
thisCdnval
Job
%
nEnd
(
ikpt
)
=
sliceplot
%
nnne
ELSE
iBand
=
1
DO
WHILE
(
results
%
eig
(
iBand
,
ikpt
,
jsp
)
.LT.
sliceplot
%
e1s
)
iBand
=
iBand
+
1
IF
(
iBand
.GT.
results
%
neig
(
ikpt
,
jsp
))
EXIT
END
DO
thisCdnval
KLoop
%
nStart
(
ikpt
)
=
iBand
thisCdnval
Job
%
nStart
(
ikpt
)
=
iBand
IF
(
iBand
.LE.
results
%
neig
(
ikpt
,
jsp
))
THEN
DO
WHILE
(
results
%
eig
(
iBand
,
ikpt
,
jsp
)
.LE.
sliceplot
%
e2s
)
iBand
=
iBand
+
1
...
...
@@ -559,26 +560,42 @@ SUBROUTINE cdnvalKLoop_init(thisCdnvalKLoop,mpi,input,kpts,banddos,noco,results,
END
DO
iBand
=
iBand
-
1
END
IF
thisCdnval
KLoop
%
nEnd
(
ikpt
)
=
iBand
nslibd
=
MAX
(
0
,
thisCdnval
KLoop
%
nEnd
(
ikpt
)
-
thisCdnvalKLoop
%
nStart
(
ikpt
)
+
1
)
thisCdnval
Job
%
nEnd
(
ikpt
)
=
iBand
nslibd
=
MAX
(
0
,
thisCdnval
Job
%
nEnd
(
ikpt
)
-
thisCdnvalJob
%
nStart
(
ikpt
)
+
1
)
IF
(
mpi
%
irank
==
0
)
WRITE
(
16
,
FMT
=
'(a,i3)'
)
' eigenvalues in sliceplot%slice:'
,
nslibd
END
IF
END
IF
thisCdnval
KLoop
%
noccbd
(
ikpt
)
=
nslibd
thisCdnval
Job
%
noccbd
(
ikpt
)
=
nslibd
END
IF
! sliceplot%slice
END
IF
IF
(
thisCdnval
KLoop
%
l_evp
)
THEN
noccbd_l
=
CEILING
(
REAL
(
thisCdnval
KLoop
%
noccbd
(
ikpt
))
/
mpi
%
isize
)
thisCdnval
KLoop
%
nStart
(
ikpt
)
=
thisCdnvalKLoop
%
nStart
(
ikpt
)
+
mpi
%
irank
*
noccbd_l
thisCdnval
KLoop
%
nEnd
(
ikpt
)
=
min
(
thisCdnvalKLoop
%
nStart
(
ikpt
)
+
(
mpi
%
irank
+1
)
*
noccbd_l
-1
,
thisCdnvalKLoop
%
noccbd
(
ikpt
))
thisCdnval
KLoop
%
noccbd
(
ikpt
)
=
thisCdnvalKLoop
%
nEnd
(
ikpt
)
-
thisCdnvalKLoop
%
nStart
(
ikpt
)
+
1
IF
(
thisCdnval
KLoop
%
noccbd
(
ikpt
)
.LT.
1
)
thisCdnvalKLoop
%
noccbd
(
ikpt
)
=
0
IF
(
thisCdnval
Job
%
l_evp
)
THEN
noccbd_l
=
CEILING
(
REAL
(
thisCdnval
Job
%
noccbd
(
ikpt
))
/
mpi
%
isize
)
thisCdnval
Job
%
nStart
(
ikpt
)
=
thisCdnvalJob
%
nStart
(
ikpt
)
+
mpi
%
irank
*
noccbd_l
thisCdnval
Job
%
nEnd
(
ikpt
)
=
min
(
thisCdnvalJob
%
nStart
(
ikpt
)
+
(
mpi
%
irank
+1
)
*
noccbd_l
-1
,
thisCdnvalJob
%
noccbd
(
ikpt
))
thisCdnval
Job
%
noccbd
(
ikpt
)
=
thisCdnvalJob
%
nEnd
(
ikpt
)
-
thisCdnvalJob
%
nStart
(
ikpt
)
+
1
IF
(
thisCdnval
Job
%
noccbd
(
ikpt
)
.LT.
1
)
thisCdnvalJob
%
noccbd
(
ikpt
)
=
0
END
IF
END
DO
END
SUBROUTINE
cdnvalKLoop_init
IF
(
ALLOCATED
(
thisCdnvalJob
%
weights
))
DEALLOCATE
(
thisCdnvalJob
%
weights
)
ALLOCATE
(
thisCdnvalJob
%
weights
(
MAXVAL
(
thisCdnvalJob
%
noccbd
(:)),
kpts
%
nkpt
))
thisCdnvalJob
%
weights
=
0.0
DO
ikpt
=
thisCdnvalJob
%
ikptStart
,
kpts
%
nkpt
,
thisCdnvalJob
%
ikptIncrement
noccbd
=
thisCdnvalJob
%
noccbd
(
ikpt
)
nStart
=
thisCdnvalJob
%
nStart
(
ikpt
)
nEnd
=
thisCdnvalJob
%
nEnd
(
ikpt
)
thisCdnvalJob
%
weights
(
1
:
noccbd
,
ikpt
)
=
results
%
w_iks
(
nStart
:
nEnd
,
ikpt
,
jsp
)
IF
(
PRESENT
(
sliceplot
))
THEN
IF
(
sliceplot
%
slice
.AND.
input
%
pallst
)
thisCdnvalJob
%
weights
(:,
ikpt
)
=
kpts
%
wtkpt
(
ikpt
)
END
IF
thisCdnvalJob
%
weights
(:
noccbd
,
ikpt
)
=
2.0
*
thisCdnvalJob
%
weights
(:
noccbd
,
ikpt
)
/
input
%
jspins
! add in spin-doubling factor
END
DO
END
SUBROUTINE
cdnvalJob_init
SUBROUTINE
gVacMap_init
(
thisGVacMap
,
dimension
,
sym
,
atoms
,
vacuum
,
stars
,
lapw
,
input
,
cell
,
kpts
,
enpara
,
vTot
,
ikpt
,
jspin
)
...
...
Daniel Wortmann
@wortmann
·
May 03, 2018
Owner
:-)
:-)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment