Details
Originally Victor found the problem with EDFT + spin-polarized run crashed (see
his description in the orig folder of the attached archive).
I managed to reproduce it with rather different input (x.param/x.cell).
I managed to trace th problem down to the following part of the source:
(in electronic_iter_diag_H): (for the given case nblock=12, total_nbands 36 and
gloval_nb is 10)
num_blocks = (wvfn%total_nbands-global_nb+1)/nblock
if(1+global_nb+nblock*num_blocks<wvfn%total_nbands) num_blocks =
num_blocks+1
do curr_block=1,num_blocks
nb = global_nb + (curr_block-1)*(nblock/num_in_bnd_group)
....
global_nb = nb
call
electronic_find_eigenslice(wvfn,wvfn_gradient,global_nb,nk,ns,top_degenerate_band,
&
&
min(wvfn%total_nbands-global_nb+1,nblock),super_wvfn, &
On the last run through the loop (curr_block =3) global_nb becomes 46 and the
parameter min(wvfn%total_nbands-global_nb+1,nblock) becomes negative (-9) and
used further to allocate some stuff etc..
I feel there is some logical error somewhere but as I could not guess what is
what...
|
Details
Originally Victor found the problem with EDFT + spin-polarized run crashed (see
his description in the orig folder of the attached archive).
I managed to reproduce it with rather different input (x.param/x.cell).
I managed to trace th problem down to the following part of the source:
(in electronic_iter_diag_H): (for the given case nblock=12, total_nbands 36 and
gloval_nb is 10)
num_blocks = (wvfn%total_nbands-global_nb+1)/nblock
if(1+global_nb+nblock*num_blocks<wvfn%total_nbands) num_blocks =
num_blocks+1
do curr_block=1,num_blocks
nb = global_nb + (curr_block-1)*(nblock/num_in_bnd_group)
....
global_nb = nb
call
electronic_find_eigenslice(wvfn,wvfn_gradient,global_nb,nk,ns,top_degenerate_band,
&
&
min(wvfn%total_nbands-global_nb+1,nblock),super_wvfn, &
On the last run through the loop (curr_block =3) global_nb becomes 46 and the
parameter min(wvfn%total_nbands-global_nb+1,nblock) becomes negative (-9) and
used further to allocate some stuff etc..
I feel there is some logical error somewhere but as I could not guess what is
what...
|