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
53
Issues
53
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
553d83d7
Commit
553d83d7
authored
Jan 18, 2018
by
Daniel Wortmann
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of iffgit.fz-juelich.de:fleur/fleur into develop
parents
ecd5cf30
11335f9f
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
148 additions
and
42 deletions
+148
-42
inpgen/set_inp.f90
inpgen/set_inp.f90
+1
-4
io/broyd_io.F90
io/broyd_io.F90
+72
-10
main/mix.F90
main/mix.F90
+8
-8
mix/broyden2.F90
mix/broyden2.F90
+28
-7
tests/scripts/jt.pm
tests/scripts/jt.pm
+20
-1
tests/tests/inpgen/Si_full_para/test.run1
tests/tests/inpgen/Si_full_para/test.run1
+4
-2
tests/tests/inpgen/Si_plain/test.run1
tests/tests/inpgen/Si_plain/test.run1
+10
-8
tests/tests/inpgen/Si_plain_explicit/test.run1
tests/tests/inpgen/Si_plain_explicit/test.run1
+5
-2
No files found.
inpgen/set_inp.f90
View file @
553d83d7
...
@@ -427,7 +427,7 @@
...
@@ -427,7 +427,7 @@
IF
(
kpts
%
specificationType
.EQ.
4
)
THEN
IF
(
kpts
%
specificationType
.EQ.
4
)
THEN
DO
i
=
1
,
3
DO
i
=
1
,
3
IF
(
kpts
%
kPointDensity
(
i
)
.LE.
0.0
)
THEN
IF
(
kpts
%
kPointDensity
(
i
)
.LE.
0.0
)
THEN
CALL
juDFT_error
(
'Error: Nonpositive kpointDensity provided'
,
calledby
=
'
kpoints
'
)
CALL
juDFT_error
(
'Error: Nonpositive kpointDensity provided'
,
calledby
=
'
set_inp
'
)
END
IF
END
IF
recVecLength
=
SQRT
(
cell
%
bmat
(
i
,
1
)
**
2
+
cell
%
bmat
(
i
,
2
)
**
2
+
cell
%
bmat
(
i
,
3
)
**
2
)
recVecLength
=
SQRT
(
cell
%
bmat
(
i
,
1
)
**
2
+
cell
%
bmat
(
i
,
2
)
**
2
+
cell
%
bmat
(
i
,
3
)
**
2
)
kpts
%
nkpt3
(
i
)
=
CEILING
(
kpts
%
kPointDensity
(
i
)
*
recVecLength
)
kpts
%
nkpt3
(
i
)
=
CEILING
(
kpts
%
kPointDensity
(
i
)
*
recVecLength
)
...
@@ -502,9 +502,6 @@
...
@@ -502,9 +502,6 @@
IF
(
ANY
(
kpts
%
nkpt3
(:)
.NE.
0
))
THEN
IF
(
ANY
(
kpts
%
nkpt3
(:)
.NE.
0
))
THEN
DO
i
=
1
,
3
DO
i
=
1
,
3
IF
(
kpts
%
kPointDensity
(
i
)
.LE.
0.0
)
THEN
CALL
juDFT_error
(
'Error: Nonpositive kpointDensity provided'
,
calledby
=
'kpoints'
)
END
IF
recVecLength
=
SQRT
(
cell
%
bmat
(
i
,
1
)
**
2
+
cell
%
bmat
(
i
,
2
)
**
2
+
cell
%
bmat
(
i
,
3
)
**
2
)
recVecLength
=
SQRT
(
cell
%
bmat
(
i
,
1
)
**
2
+
cell
%
bmat
(
i
,
2
)
**
2
+
cell
%
bmat
(
i
,
3
)
**
2
)
kPointDen
(
i
)
=
kpts
%
nkpt3
(
i
)
/
recVecLength
kPointDen
(
i
)
=
kpts
%
nkpt3
(
i
)
/
recVecLength
END
DO
END
DO
...
...
io/broyd_io.F90
View file @
553d83d7
...
@@ -223,7 +223,7 @@ SUBROUTINE readDeltaNVec(input,hybrid,vecLen,relIter,currentIter,deltaNVec)
...
@@ -223,7 +223,7 @@ SUBROUTINE readDeltaNVec(input,hybrid,vecLen,relIter,currentIter,deltaNVec)
INTEGER
,
INTENT
(
IN
)
::
vecLen
,
relIter
,
currentIter
INTEGER
,
INTENT
(
IN
)
::
vecLen
,
relIter
,
currentIter
REAL
,
INTENT
(
OUT
)
::
deltaNVec
(
vecLen
)
REAL
,
INTENT
(
OUT
)
::
deltaNVec
(
vecLen
)
INTEGER
::
mode
,
npos
INTEGER
::
mode
,
npos
,
iter
INTEGER
*
8
::
recLen
INTEGER
*
8
::
recLen
CALL
getIOMode
(
mode
)
CALL
getIOMode
(
mode
)
...
@@ -240,8 +240,11 @@ SUBROUTINE readDeltaNVec(input,hybrid,vecLen,relIter,currentIter,deltaNVec)
...
@@ -240,8 +240,11 @@ SUBROUTINE readDeltaNVec(input,hybrid,vecLen,relIter,currentIter,deltaNVec)
recl
=
recLen
,
form
=
'unformatted'
,
status
=
'unknown'
)
recl
=
recLen
,
form
=
'unformatted'
,
status
=
'unknown'
)
ENDIF
ENDIF
npos
=
currentIter
+
relIter
-1
iter
=
currentIter
+
relIter
IF
(
currentIter
.GT.
input
%
maxiter
+1
)
npos
=
MOD
(
currentIter
-2
,
input
%
maxiter
)
+1
npos
=
iter
-1
IF
(
iter
.GT.
1
)
npos
=
MOD
(
iter
-2
,
input
%
maxiter
)
+1
! WRITE(1400,*) 'readDeltaNVec: iter,npos: ', iter, npos
READ
(
59
,
rec
=
npos
)
deltaNVec
(:
vecLen
)
READ
(
59
,
rec
=
npos
)
deltaNVec
(:
vecLen
)
...
@@ -274,7 +277,9 @@ SUBROUTINE writeDeltaNVec(input,hybrid,vecLen,currentIter,deltaNVec)
...
@@ -274,7 +277,9 @@ SUBROUTINE writeDeltaNVec(input,hybrid,vecLen,currentIter,deltaNVec)
ENDIF
ENDIF
npos
=
currentIter
-1
npos
=
currentIter
-1
IF
(
currentIter
.GT.
input
%
maxiter
+1
)
npos
=
MOD
(
currentIter
-2
,
input
%
maxiter
)
+1
IF
(
currentIter
.GT.
1
)
npos
=
MOD
(
currentIter
-2
,
input
%
maxiter
)
+1
! WRITE(1500,*) 'writeDeltaNVec: iter,npos: ', currentIter, npos
WRITE
(
59
,
rec
=
npos
)
deltaNVec
(:
vecLen
)
WRITE
(
59
,
rec
=
npos
)
deltaNVec
(:
vecLen
)
...
@@ -289,7 +294,7 @@ SUBROUTINE readDeltaFVec(input,hybrid,vecLen,relIter,currentIter,deltaFVec)
...
@@ -289,7 +294,7 @@ SUBROUTINE readDeltaFVec(input,hybrid,vecLen,relIter,currentIter,deltaFVec)
INTEGER
,
INTENT
(
IN
)
::
vecLen
,
relIter
,
currentIter
INTEGER
,
INTENT
(
IN
)
::
vecLen
,
relIter
,
currentIter
REAL
,
INTENT
(
OUT
)
::
deltaFVec
(
vecLen
)
REAL
,
INTENT
(
OUT
)
::
deltaFVec
(
vecLen
)
INTEGER
::
mode
,
npos
INTEGER
::
mode
,
npos
,
iter
INTEGER
*
8
::
recLen
INTEGER
*
8
::
recLen
CALL
getIOMode
(
mode
)
CALL
getIOMode
(
mode
)
...
@@ -306,8 +311,11 @@ SUBROUTINE readDeltaFVec(input,hybrid,vecLen,relIter,currentIter,deltaFVec)
...
@@ -306,8 +311,11 @@ SUBROUTINE readDeltaFVec(input,hybrid,vecLen,relIter,currentIter,deltaFVec)
recl
=
recLen
,
form
=
'unformatted'
,
status
=
'unknown'
)
recl
=
recLen
,
form
=
'unformatted'
,
status
=
'unknown'
)
ENDIF
ENDIF
npos
=
currentIter
+
relIter
-1
iter
=
currentIter
+
relIter
IF
(
currentIter
.GT.
input
%
maxiter
+1
)
npos
=
MOD
(
currentIter
-2
,
input
%
maxiter
)
+1
npos
=
iter
-1
IF
(
iter
.GT.
1
)
npos
=
MOD
(
iter
-2
,
input
%
maxiter
)
+1
! WRITE(1400,*) 'readDeltaFVec: iter,npos: ', iter, npos
READ
(
59
,
rec
=
npos
)
deltaFVec
(:
vecLen
)
READ
(
59
,
rec
=
npos
)
deltaFVec
(:
vecLen
)
...
@@ -340,7 +348,9 @@ SUBROUTINE writeDeltaFVec(input,hybrid,vecLen,currentIter,deltaFVec)
...
@@ -340,7 +348,9 @@ SUBROUTINE writeDeltaFVec(input,hybrid,vecLen,currentIter,deltaFVec)
ENDIF
ENDIF
npos
=
currentIter
-1
npos
=
currentIter
-1
IF
(
currentIter
.GT.
input
%
maxiter
+1
)
npos
=
MOD
(
currentIter
-2
,
input
%
maxiter
)
+1
IF
(
currentIter
.GT.
1
)
npos
=
MOD
(
currentIter
-2
,
input
%
maxiter
)
+1
! WRITE(1500,*) 'writeDeltaFVec: iter,npos: ', currentIter, npos
WRITE
(
59
,
rec
=
npos
)
deltaFVec
(:
vecLen
)
WRITE
(
59
,
rec
=
npos
)
deltaFVec
(:
vecLen
)
...
@@ -374,7 +384,9 @@ SUBROUTINE writeBroydenOverlapExt(input,hybrid,currentIter,historyLength,&
...
@@ -374,7 +384,9 @@ SUBROUTINE writeBroydenOverlapExt(input,hybrid,currentIter,historyLength,&
ENDIF
ENDIF
npos
=
currentIter
-1
npos
=
currentIter
-1
IF
(
currentIter
.GT.
input
%
maxiter
+1
)
npos
=
MOD
(
currentIter
-2
,
input
%
maxiter
)
+1
IF
(
currentIter
.GT.
1
)
npos
=
MOD
(
currentIter
-2
,
input
%
maxiter
)
+1
! WRITE(1500,*) 'writeBroydenOverlapExt: iter, npos: ', currentIter, npos
WRITE
(
59
,
rec
=
npos
)
currentIter
,
historyLength
,&
WRITE
(
59
,
rec
=
npos
)
currentIter
,
historyLength
,&
dNdNLast
(:
input
%
maxIter
),
dFdFLast
(:
input
%
maxIter
),
&
dNdNLast
(:
input
%
maxIter
),
dFdFLast
(:
input
%
maxIter
),
&
...
@@ -424,7 +436,9 @@ SUBROUTINE readBroydenOverlaps(input,hybrid,currentIter,historyLength,&
...
@@ -424,7 +436,9 @@ SUBROUTINE readBroydenOverlaps(input,hybrid,currentIter,historyLength,&
iter
=
currentIter
-
historyLength
+
i
iter
=
currentIter
-
historyLength
+
i
npos
=
iter
-1
npos
=
iter
-1
IF
(
iter
.GT.
input
%
maxiter
+1
)
npos
=
MOD
(
iter
-2
,
input
%
maxiter
)
+1
IF
(
iter
.GT.
1
)
npos
=
MOD
(
iter
-2
,
input
%
maxiter
)
+1
! WRITE(1400,*) 'readBroydenOverlaps: iter,npos: ', iter, npos
READ
(
59
,
rec
=
npos
)
recIter
,
recHistLen
,&
READ
(
59
,
rec
=
npos
)
recIter
,
recHistLen
,&
dNdNLast
(:
input
%
maxIter
),
dFdFLast
(:
input
%
maxIter
),
&
dNdNLast
(:
input
%
maxIter
),
dFdFLast
(:
input
%
maxIter
),
&
...
@@ -471,6 +485,20 @@ SUBROUTINE resetBroydenHistory()
...
@@ -471,6 +485,20 @@ SUBROUTINE resetBroydenHistory()
CALL
system
(
'rm '
//
TRIM
(
ADJUSTL
(
filename
)))
CALL
system
(
'rm '
//
TRIM
(
ADJUSTL
(
filename
)))
END
IF
END
IF
END
DO
END
DO
INQUIRE
(
file
=
'broydOvlp'
,
exist
=
l_exist
)
IF
(
l_exist
)
CALL
system
(
'rm broydOvlp'
)
INQUIRE
(
file
=
'hf_broydOvlp'
,
exist
=
l_exist
)
IF
(
l_exist
)
CALL
system
(
'rm hf_broydOvlp'
)
INQUIRE
(
file
=
'broyd_DF'
,
exist
=
l_exist
)
IF
(
l_exist
)
CALL
system
(
'rm broyd_DF'
)
INQUIRE
(
file
=
'hf_broyd_DF'
,
exist
=
l_exist
)
IF
(
l_exist
)
CALL
system
(
'rm hf_broyd_DF'
)
INQUIRE
(
file
=
'broyd_DN'
,
exist
=
l_exist
)
IF
(
l_exist
)
CALL
system
(
'rm broyd_DN'
)
INQUIRE
(
file
=
'hf_broyd_DN'
,
exist
=
l_exist
)
IF
(
l_exist
)
CALL
system
(
'rm hf_broyd_DN'
)
END
SUBROUTINE
resetBroydenHistory
END
SUBROUTINE
resetBroydenHistory
...
@@ -503,4 +531,38 @@ LOGICAL FUNCTION initBroydenHistory(input,hybrid, vecLen)
...
@@ -503,4 +531,38 @@ LOGICAL FUNCTION initBroydenHistory(input,hybrid, vecLen)
END
FUNCTION
initBroydenHistory
END
FUNCTION
initBroydenHistory
LOGICAL
FUNCTION
initBroydenHistory2
(
input
,
hybrid
,
vecLen
)
! Initializes a Broyden history
! returns true if there already exists a Broyden history
TYPE
(
t_input
),
INTENT
(
IN
)
::
input
TYPE
(
t_hybrid
),
INTENT
(
IN
)
::
hybrid
INTEGER
,
INTENT
(
IN
)
::
vecLen
INTEGER
*
8
::
recLen
LOGICAL
::
l_exist
INQUIRE
(
file
=
'broyd_DF'
,
exist
=
l_exist
)
recLen
=
(
vecLen
+1
)
*
8
IF
(
hybrid
%
l_calhf
)
THEN
OPEN
(
59
,
file
=
'hf_broyd_DF'
,
access
=
'direct'
,&
recl
=
recLen
,
form
=
'unformatted'
,
status
=
'unknown'
)
OPEN
(
60
,
file
=
'hf_broyd_DN'
,
access
=
'direct'
,&
recl
=
recLen
,
form
=
'unformatted'
,
status
=
'unknown'
)
ELSE
OPEN
(
59
,
file
=
'broyd_DF'
,
access
=
'direct'
,&
recl
=
recLen
,
form
=
'unformatted'
,
status
=
'unknown'
)
OPEN
(
60
,
file
=
'broyd_DN'
,
access
=
'direct'
,&
recl
=
recLen
,
form
=
'unformatted'
,
status
=
'unknown'
)
ENDIF
CLOSE
(
59
)
CLOSE
(
60
)
initBroydenHistory2
=
l_exist
END
FUNCTION
initBroydenHistory2
END
MODULE
m_broyd_io
END
MODULE
m_broyd_io
main/mix.F90
View file @
553d83d7
...
@@ -160,17 +160,17 @@ SUBROUTINE mix(stars,atoms,sphhar,vacuum,input,sym,cell,noco,oneD,&
...
@@ -160,17 +160,17 @@ SUBROUTINE mix(stars,atoms,sphhar,vacuum,input,sym,cell,noco,oneD,&
IF
(
input
%
imix
.EQ.
0
)
THEN
IF
(
input
%
imix
.EQ.
0
)
THEN
CALL
stmix
(
atoms
,
input
,
noco
,
nmap
,
nmaph
,
fsm
,
sm
)
CALL
stmix
(
atoms
,
input
,
noco
,
nmap
,
nmaph
,
fsm
,
sm
)
ELSE
ELSE
CALL
broyden
(
cell
,
stars
,
atoms
,
vacuum
,
sphhar
,
input
,
noco
,
oneD
,
sym
,&
!
CALL broyden(cell,stars,atoms,vacuum,sphhar,input,noco,oneD,sym,&
hybrid
,
mmap
,
nmaph
,
mapmt
,
mapvac2
,
nmap
,
fsm
,
sm
)
!
hybrid,mmap,nmaph,mapmt,mapvac2,nmap,fsm,sm)
! Replace the broyden call above by the commented metric and broyden2 calls
! Replace the broyden call above by the commented metric and broyden2 calls
! below to switch on the continuous restart of the Broyden method.
! below to switch on the continuous restart of the Broyden method.
!
! Apply metric w to sm and store in smMet: w |sm>
! Apply metric w to sm and store in smMet: w |sm>
!
CALL metric(cell,atoms,vacuum,sphhar,input,noco,stars,sym,oneD,&
CALL
metric
(
cell
,
atoms
,
vacuum
,
sphhar
,
input
,
noco
,
stars
,
sym
,
oneD
,&
!
mmap,nmaph,mapmt,mapvac2,sm,smMet,l_pot)
mmap
,
nmaph
,
mapmt
,
mapvac2
,
sm
,
smMet
,
l_pot
)
!
!
CALL broyden2(cell,stars,atoms,vacuum,sphhar,input,noco,oneD,sym,&
CALL
broyden2
(
cell
,
stars
,
atoms
,
vacuum
,
sphhar
,
input
,
noco
,
oneD
,
sym
,&
!
hybrid,mmap,nmaph,mapmt,mapvac2,nmap,fsm,sm,fmMet,smMet)
hybrid
,
mmap
,
nmaph
,
mapmt
,
mapvac2
,
nmap
,
fsm
,
sm
,
fmMet
,
smMet
)
END
IF
END
IF
!initiatlize mixed density and extract it with brysh2 call
!initiatlize mixed density and extract it with brysh2 call
...
...
mix/broyden2.F90
View file @
553d83d7
...
@@ -103,7 +103,7 @@ CONTAINS
...
@@ -103,7 +103,7 @@ CONTAINS
dFMet
=
0.0
dFMet
=
0.0
mit
=
0
mit
=
0
l_exist
=
initBroydenHistory
(
input
,
hybrid
,
nmap
)
! returns true if there already exists a Broyden history
l_exist
=
initBroydenHistory
2
(
input
,
hybrid
,
nmap
)
! returns true if there already exists a Broyden history
IF
(
.NOT.
l_exist
)
mit
=
1
IF
(
.NOT.
l_exist
)
mit
=
1
IF
(
mit
.NE.
1
)
THEN
IF
(
mit
.NE.
1
)
THEN
...
@@ -128,7 +128,6 @@ CONTAINS
...
@@ -128,7 +128,6 @@ CONTAINS
! save F_m and rho_m for next iteration
! save F_m and rho_m for next iteration
nit
=
mit
+1
nit
=
mit
+1
IF
(
nit
>
input
%
maxiter
+1
)
nit
=
1
CALL
writeLastIterInAndDiffDen
(
hybrid
,
nmap
,
nit
,
input
%
alpha
,
sm
,
fm
,
smMet
,
fmMet
)
CALL
writeLastIterInAndDiffDen
(
hybrid
,
nmap
,
nit
,
input
%
alpha
,
sm
,
fm
,
smMet
,
fmMet
)
IF
(
mit
.EQ.
1
)
THEN
IF
(
mit
.EQ.
1
)
THEN
...
@@ -151,7 +150,7 @@ CONTAINS
...
@@ -151,7 +150,7 @@ CONTAINS
! Extend overlap matrices <delta n(i) | delta n(j)>, <delta F(i) | delta F(j)>,
! Extend overlap matrices <delta n(i) | delta n(j)>, <delta F(i) | delta F(j)>,
! <delta n(i) | delta F(j)>, <delta F(i) | delta n(j)> -start-
! <delta n(i) | delta F(j)>, <delta F(i) | delta n(j)> -start-
iread
=
MIN
(
mit
-1
,
input
%
maxiter
+1
)
iread
=
MIN
(
mit
-1
,
input
%
maxiter
)
historyLength
=
iread
historyLength
=
iread
dNdNLast
=
0.0
dNdNLast
=
0.0
...
@@ -159,9 +158,18 @@ CONTAINS
...
@@ -159,9 +158,18 @@ CONTAINS
dNdFLast
=
0.0
dNdFLast
=
0.0
dFdNLast
=
0.0
dFdNLast
=
0.0
! WRITE(1400,*) '========================================'
! WRITE(1400,*) '========================================'
! WRITE(1400,*) '========================================'
! WRITE(1400,*) 'mit: ', mit
! WRITE(1400,*) 'iread, historyLength: ', iread, historyLength
DO
it
=
2
,
iread
DO
it
=
2
,
iread
CALL
readDeltaNVec
(
input
,
hybrid
,
nmap
,
it
-
mit
,
mit
,
deltaN_i
)
CALL
readDeltaNVec
(
input
,
hybrid
,
nmap
,
it
-
iread
-1
,
mit
,
deltaN_i
)
CALL
readDeltaFVec
(
input
,
hybrid
,
nmap
,
it
-
mit
,
mit
,
deltaF_i
)
CALL
readDeltaFVec
(
input
,
hybrid
,
nmap
,
it
-
iread
-1
,
mit
,
deltaF_i
)
! WRITE(1400,'(4i7)') it,mit,it-iread-1,mit+(it-iread-1)
! WRITE(1400,'(a,5f15.8)') 'deltaN_i: ', deltaN_i(1), deltaN_i(2), deltaN_i(3), deltaN_i(4), deltaN_i(5)
! WRITE(1400,'(a,5f15.8)') 'deltaF_i: ', deltaF_i(1), deltaF_i(2), deltaF_i(3), deltaF_i(4), deltaF_i(5)
dNdNLast
(
it
-1
)
=
CPP_BLAS_sdot
(
nmap
,
deltaN_i
,
1
,
dNMet
,
1
)
dNdNLast
(
it
-1
)
=
CPP_BLAS_sdot
(
nmap
,
deltaN_i
,
1
,
dNMet
,
1
)
dFdFLast
(
it
-1
)
=
CPP_BLAS_sdot
(
nmap
,
deltaF_i
,
1
,
dFMet
,
1
)
dFdFLast
(
it
-1
)
=
CPP_BLAS_sdot
(
nmap
,
deltaF_i
,
1
,
dFMet
,
1
)
...
@@ -174,6 +182,11 @@ CONTAINS
...
@@ -174,6 +182,11 @@ CONTAINS
dNdFLast
(
historyLength
)
=
CPP_BLAS_sdot
(
nmap
,
dNVec
,
1
,
dFMet
,
1
)
dNdFLast
(
historyLength
)
=
CPP_BLAS_sdot
(
nmap
,
dNVec
,
1
,
dFMet
,
1
)
dFdNLast
(
historyLength
)
=
CPP_BLAS_sdot
(
nmap
,
dFVec
,
1
,
dNMet
,
1
)
dFdNLast
(
historyLength
)
=
CPP_BLAS_sdot
(
nmap
,
dFVec
,
1
,
dNMet
,
1
)
! WRITE(1400,*) 'last overlaps:'
! DO i = 1, historyLength
! WRITE(1400,'(i7,4f20.13)') i,dNdNLast(i),dFdFLast(i),dNdFLast(i),dFdNLast(i)
! END DO
CALL
writeBroydenOverlapExt
(
input
,
hybrid
,
mit
,
historyLength
,&
CALL
writeBroydenOverlapExt
(
input
,
hybrid
,
mit
,
historyLength
,&
dNdNLast
,
dFdFLast
,
dNdFLast
,
dFdNLast
)
dNdNLast
,
dFdFLast
,
dNdFLast
,
dFdNLast
)
...
@@ -185,6 +198,14 @@ CONTAINS
...
@@ -185,6 +198,14 @@ CONTAINS
CALL
readBroydenOverlaps
(
input
,
hybrid
,
mit
,
historyLength
,&
CALL
readBroydenOverlaps
(
input
,
hybrid
,
mit
,
historyLength
,&
dNdNMat
,
dFdFMat
,
dNdFMat
,
dFdNMat
)
dNdNMat
,
dFdFMat
,
dNdFMat
,
dFdNMat
)
! WRITE(1400,*) 'all overlaps'
! DO i = 1, historyLength
! DO j = 1, historyLength
! WRITE(1400,'(2i7,4f20.13)') i,j,dNdNMat(j,i),dFdFMat(j,i),dNdFMat(j,i),dFdNMat(j,i)
! END DO
! END DO
! WRITE(1400,*) '-----------------------------'
! Extend overlap matrices <delta n(i) | delta n(j)>, <delta F(i) | delta F(j)>,
! Extend overlap matrices <delta n(i) | delta n(j)>, <delta F(i) | delta F(j)>,
! <delta n(i) | delta F(j)>, <delta F(i) | delta n(j)> -end-
! <delta n(i) | delta F(j)>, <delta F(i) | delta n(j)> -end-
...
@@ -326,8 +347,8 @@ CONTAINS
...
@@ -326,8 +347,8 @@ CONTAINS
vVec
=
0.0
vVec
=
0.0
DO
it
=
2
,
iread
DO
it
=
2
,
iread
CALL
readDeltaNVec
(
input
,
hybrid
,
nmap
,
it
-
mit
,
mit
,
deltaN_i
)
CALL
readDeltaNVec
(
input
,
hybrid
,
nmap
,
it
-
iread
-1
,
mit
,
deltaN_i
)
CALL
readDeltaFVec
(
input
,
hybrid
,
nmap
,
it
-
mit
,
mit
,
deltaF_i
)
CALL
readDeltaFVec
(
input
,
hybrid
,
nmap
,
it
-
iread
-1
,
mit
,
deltaF_i
)
DO
k
=
1
,
nmap
DO
k
=
1
,
nmap
uVec
(
k
)
=
uVec
(
k
)
+
uDNTableau
(
it
-1
,
historyLength
)
*
deltaN_i
(
k
)
uVec
(
k
)
=
uVec
(
k
)
+
uDNTableau
(
it
-1
,
historyLength
)
*
deltaN_i
(
k
)
...
...
tests/scripts/jt.pm
View file @
553d83d7
...
@@ -169,4 +169,23 @@ sub testresult($){
...
@@ -169,4 +169,23 @@ sub testresult($){
}
}
}
}
sub
test_grep_error
($){
my
$file
=
shift
;
my
$error
=
"
juDFT-Error
";
my
$warning
=
"
juDFT-Warning
";
print
LOG
"
Checking for judft messages in
$file
:
";
if
(
system
("
grep -q
\"
$error
\"
$file
")
==
0
){
my
$message
=
`
grep "Error message:"
$file
`;
print
LOG
"
Found a juDFT-ERROR:
$message
\n
";
return
1
;
}
elsif
(
system
("
grep -q
\"
$warning
\"
$file
")
==
0
){
print
LOG
"
Found a juDFT-WARNING
\n
";
return
0
;
}
else
{
print
LOG
"
No error and no warning found
\n
";
return
0
;
}
}
tests/tests/inpgen/Si_full_para/test.run1
View file @
553d83d7
...
@@ -2,10 +2,12 @@
...
@@ -2,10 +2,12 @@
jt::copyfile("files/inp_Si_para",$workdir);
jt::copyfile("files/inp_Si_para",$workdir);
jt::testrun("$executable < inp_Si_para",$workdir);
#jt::testrun("$executable < inp_Si_para",$workdir);
jt::testrun("$executable -explicit < inp_Si_para &>outshell ; cat outshell",$workdir);
$result=jt::test_grep_error("$workdir/outshell");
#now test output
#now test output
$result=jt::test_fileexists("$workdir/inp.xml");
$result
+
=jt::test_fileexists("$workdir/inp.xml");
jt::stageresult($workdir,$result,"1");
jt::stageresult($workdir,$result,"1");
tests/tests/inpgen/Si_plain/test.run1
View file @
553d83d7
...
@@ -2,20 +2,22 @@
...
@@ -2,20 +2,22 @@
jt::copyfile("files/inp_Si_plain",$workdir);
jt::copyfile("files/inp_Si_plain",$workdir);
jt::testrun("$executable < inp_Si_plain",$workdir);
#jt::testrun("$executable < inp_Si_plain &> outshell | cat outshell",$workdir);
jt::testrun("$executable < inp_Si_plain &>outshell ; cat outshell",$workdir);
$result=jt::test_grep_error("$workdir/outshell");
#now test if inp.xml file was produced and if it contains certain features.
#now test if inp.xml file was produced and if it contains certain features.
$result=jt::test_fileexists("$workdir/inp.xml");
$result
+
=jt::test_fileexists("$workdir/inp.xml");
$result+=jt::test_grepexists("$workdir/inp.xml",
'filename="sym.out"'
);
$result+=jt::test_grepexists("$workdir/inp.xml",
"sym.out"
);
$result+=jt::test_grepexists("$workdir/inp.xml","rel
p
os label=");
$result+=jt::test_grepexists("$workdir/inp.xml","rel
P
os label=");
#test interface, that all files are there. This lst should be complete
#test interface, that all files are there. This lst should be complete
# notice there is per default no inp file also no kpts file and no enpara file
# notice there is per default no inp file also no kpts file and no enpara file
# also developers should be made aware if the interface is changed.
# also developers should be made aware if the interface is changed.
$result=jt::test_fileexists("$workdir/out");
$result+=jt::test_fileexists("$workdir/out");
$result=jt::test_fileexists("$workdir/FleurInputSchema.xsd");
$result+=jt::test_fileexists("$workdir/FleurInputSchema.xsd");
$result=jt::test_fileexists("$workdir/struct.xcf");
$result+=jt::test_fileexists("$workdir/sym.out");
$result=jt::test_fileexists("$workdir/sym.out");
jt::stageresult($workdir,$result,"1");
jt::stageresult($workdir,$result,"1");
tests/tests/inpgen/Si_plain_explicit/test.run1
View file @
553d83d7
...
@@ -2,10 +2,13 @@
...
@@ -2,10 +2,13 @@
jt::copyfile("files/inp_Si_plain",$workdir);
jt::copyfile("files/inp_Si_plain",$workdir);
jt::testrun("$executable -explicit < inp_Si_plain",$workdir);
jt::testrun("$executable -explicit < inp_Si_plain &>outshell ; cat outshell",$workdir);
# test for errors and warnings
$result=jt::test_grep_error("$workdir/outshell");
#now test output
#now test output
$result=jt::test_fileexists("$workdir/inp.xml");
$result
+
=jt::test_fileexists("$workdir/inp.xml");
jt::stageresult($workdir,$result,"1");
jt::stageresult($workdir,$result,"1");
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