PAW AE_WFK with SOC

External optional components of Abinit (BigDFT, Wannier90...) and codes using/providing data from/to Abinit (AtomPAW, ONCVPSP, EXC, DP, Yambo...)

Moderators: ebousquet, bxu

Locked
temok
Posts: 39
Joined: Tue Jun 08, 2010 1:44 am

PAW AE_WFK with SOC

Post by temok » Fri Jun 27, 2014 9:32 am

Dear ABINIT Forum Members,

[Dear Panel Admins, please let me know if I should move this post to the Ground State panel]

For post-procesing purposes, I need to output the full wavefunction for a PAW run, including the spin orbit coupling, for a set of kpoints, i.e.

Code: Select all

pawprtwf  1
pawspnorb 1
kptopt    4  # Only spatial symmetries. Mandatory if pawspnorb=1.
iscf2    -2
kpt2   <the kpoints>


I do the run with an ABINIT executable (version 7.6.2) compiled for serial execution,
(MPI disabled at configure stage), as implied in the description of pawprtwf.

The following files get written:

Code: Select all

4.1G     case_DS2_AE_ONSITE_WFK-etsf.nc
27G     case_DS2_AE_WFK-etsf.nc
40K     case_DS2_PAWSTAT
4.1G     case_DS2_PS_ONSITE_WFK-etsf.nc
27G     case_DS2_PS_WFK-etsf.nc
485M     case_DS2_WFK


And although the run reaches the point where the suggested acknowledgements and the string
"Calculation completed. .Delivered 5 WARNINGs and 0 COMMENTs" gets written,
such log file is infested with error messages.

Surprisingly these errors did not stop ABINIT to proceed, as usually do,
so I wonder if I can trust the AE_WFK-etsf.nc

The following block of error messages appear almost 3 thousand times (exactly nkpt * band * nspinor; I got 34 kpts, 44 bands and 2 spinnors)

Code: Select all

--- !ERROR
message: |
    Backtrace          : etsf_io_main_put()
                           write_var_double_var()
                           write_var_double_2D()
                           etsf_io_low_check_var()
      Action performed   : specifications routine argument
      Target (name)      : real_space_wavefunctions (map)
      Error message      : wrong map value  (map address = ***** & max address = *****)

src_file: pawmkaewf.F90
src_line: 1105
...
--- !ERROR
message: |
    Backtrace          : etsf_io_main_put()
                           write_var_double_var()
                           write_var_double_2D()
                           etsf_io_low_check_var()
      Action performed   : specifications routine argument
      Target (name)      : real_space_wavefunctions (map)
      Error message      : wrong map value  (map address = ***** & max address = *****)

src_file: pawmkaewf.F90
src_line: 1109


So, the error seems to come from lines 1105 & 1109 of pawmkaewf.F90:
( leading numbers added by 'less -N pawmkaewf.F90')

Code: Select all

   1087 #if defined HAVE_TRIO_ETSF_IO
   1088        MainFolder%wfs_rsp__spin_access   =  isppol !this is wrong if para!
   1089        if (nprocs>1) MainFolder%wfs_rsp__spin_access = 1
   1090        MainFolder%wfs_rsp__kpoint_access = my_kstable(ikpt,isppol) !ikpt
   1091        MainFolder%wfs_rsp__state_access  = iband
   1092 !      main_folder%wfs_coeff__number_of_coefficients = npw * dtset%nspinor
   1093
   1094 !      We use the group level write routine.
   1095        MainFolder%real_space_wavefunctions%data2D  => ur
   1096        call etsf_io_main_put(ncids(1),MainFolder,lstat,Error_data=Error_data)
   1097        ETSF_CHECK_ERROR(lstat,Error_data)
   1098
   1099        MainFolder%real_space_wavefunctions%data2D  => ur_pw
   1100        call etsf_io_main_put(ncids(2),MainFolder,lstat,Error_data=Error_data)
   1101        ETSF_CHECK_ERROR(lstat,Error_data)
   1102
   1103        MainFolder%real_space_wavefunctions%data2D  => ur_ae_onsite
   1104        call etsf_io_main_put(ncids(3),MainFolder,lstat,Error_data=Error_data)
   1105        ETSF_CHECK_ERROR(lstat,Error_data)
   1106
   1107        MainFolder%real_space_wavefunctions%data2D  => ur_ps_onsite
   1108        call etsf_io_main_put(ncids(4),MainFolder,lstat,Error_data=Error_data)
   1109        ETSF_CHECK_ERROR(lstat,Error_data)
   1110
   1111
   1112 #endif


and a selection of the norm info is

Code: Select all

.
.
ikpt,iband, norm (G,PSWF)=   34   17    0.4328657874146002 norm (R,AEWF)=    1.0001195823635485
ikpt,iband, norm (G,PSWF)=   34   18    0.4328657862454370 norm (R,AEWF)=    1.0001195841832851
ikpt,iband, norm (G,PSWF)=   34   19    0.4321775527241986 norm (R,AEWF)=    1.0007126256329253
ikpt,iband, norm (G,PSWF)=   34   20    0.4321775554873209 norm (R,AEWF)=    1.0007126263955426
ikpt,iband, norm (G,PSWF)=   34   21    1.0009449953360174 norm (R,AEWF)=    1.0003276827115253
ikpt,iband, norm (G,PSWF)=   34   22    1.0009449873972405 norm (R,AEWF)=    1.0003276838017774
ikpt,iband, norm (G,PSWF)=   34   23    1.0036109239103379 norm (R,AEWF)=    1.0006291588033582
ikpt,iband, norm (G,PSWF)=   34   24    1.0036109259480923 norm (R,AEWF)=    1.0006291561889276
.
.

I would appreciate any comments on the validity of the obtained AE_WFK-etsf.nc data.
With regards,
Temok

temok
Posts: 39
Joined: Tue Jun 08, 2010 1:44 am

Re: PAW AE_WFK with SOC

Post by temok » Fri Jun 27, 2014 6:38 pm

I wish to add that the produced AE_WFK-etsf.nc file seems to be corrupted.

Usually I browse ABINIT's etsf.nc files with ipython, using

Code: Select all

from scipy.io import netcdf
f = netcdf.netcdf_file(  'case_DS2_AE_WFK-etsf.nc', 'r')

but for this AE_WFK python gives:
ValueError: mmap length is greater than file size.

As mentioned in the previous post, ABINIT's error message to the log file was:
Error message : wrong map value (map address = ***** & max address = *****)

The full python's errors are:

Code: Select all

ValueError                                Traceback (most recent call last)
<ipython-input-2-987ca711c62e> in <module>()
----> 1 f = netcdf.netcdf_file(  '../staneneo_DS2_AE_WFK-etsf.nc', 'r')

/usr/local/lib/python2.7/site-packages/scipy-0.13.3-py2.7-linux-x86_64.egg/scipy/io/netcdf.pyc in __init__(self, filename, mode, mmap, version)
    216
    217         if mode == 'r':
--> 218             self._read()
    219
    220     def __setattr__(self, attr, value):

/usr/local/lib/python2.7/site-packages/scipy-0.13.3-py2.7-linux-x86_64.egg/scipy/io/netcdf.pyc in _read(self)
    506         self._read_dim_array()
    507         self._read_gatt_array()
--> 508         self._read_var_array()
    509
    510     def _read_numrecs(self):

/usr/local/lib/python2.7/site-packages/scipy-0.13.3-py2.7-linux-x86_64.egg/scipy/io/netcdf.pyc in _read_var_array(self)
    589                 a_size = reduce(mul, shape, 1) * size
    590                 if self.use_mmap:
--> 591                     mm = mmap(self.fp.fileno(), begin_+a_size, access=ACCESS_READ)
    592                     data = ndarray.__new__(ndarray, shape, dtype=dtype_,
    593                             buffer=mm, offset=begin_, order=0)

ValueError: mmap length is greater than file size


Is it likely that the upcoming ABINIT 7.8 will support the output of this PAW AE_WFK for the case of spin-orbit?

(in older posts dated from a Aug 2012, http://forum.abinit.org/viewtopic.php?f=19&t=1627, problems related to this AE_WFK+SOC were mentioned, and a solution was proposed. I wonder if this was indeed corrected in the current ABINIT versions 7.6.x.

Cheers,
Temok

Locked