irreducible-representations / irrep

GNU General Public License v3.0
62 stars 31 forks source link

Record size error with Abinit #57

Closed lucabuia closed 1 year ago

lucabuia commented 1 year ago

Hi,

I've been trying to use IrRep with the Abinit output WFK file. My WFK file just contains the wavefunction at the GM point, so I'm trying to use the command

irrep -Ecut=476 -code=abinit -fWFK=4irrepo_DS1_WFK -IBstart=61 -IBend=63 -kpoints=1 -kpnames="GM" > out

but I keep getting this record size error

record = fWFK.read_record('f8') File "c:\users\lucaadmin\appdata\local\programs\python\python38-32\lib\site-packages\fortio.py", line 306, in read_record raise ValueError("record size is not multiple of itemsize.") ValueError: record size is not multiple of itemsize.

Do you have any ideas about what it could be? the Abinit input file that I'm using is

nspinor 1 nsppol 1 nspden 1

istwfk *1 iomode 1 prtwf 1

getden_filepath "../GS/GSo_DS1_DEN.nc" structure "abifile:../GS/GSo_DS1_GSR.nc"

occopt 7 tsmear 0.001 ecut 17.5 pawecutdg 35 nband 75 nbdbuf 5

iscf -2 tolwfr 1e-22 kptopt 0 kpt 0.0 0.0 0.0 #GM nkpt 1

stepan-tsirkin commented 1 year ago

Hi @lucabuia ,

which version of abinit are you using? are you new to irrep and it never worked for you or did it work in some cases (probably with an earlier version of abinit, or for some different input data ?

lucabuia commented 1 year ago

Hi Stepan,

I'm sorry, I should've specified: this is the first time I'm using irrep, and I'm using Abinit 9.6.2.

I don't think there's a problem with the WFK file, since I'm able to read the coefficients and transform them from plane wave to real space basis to plot the wf, so I think there's maybe a problem with the options I'm using with the irrep command. Could it be that I'm using a cutoff energy in Hartree in Abinit? I've noticed that I can't use decimals in the command line, so I just approximated the conversion to eV to the nearest integer (476) in the hope that it would work.

Thanks for your time, Luca

stepan-tsirkin commented 1 year ago

I'm able to read the coefficients and transform them from plane wave to real space basis to plot the wf

Yes, but you do it with internal routines of Abinit, It may happen that the format of the WFK file has changed in newer version so that irrep does not yet know how to read it.

Could you run an abinit calculation to create a WFK file as small as possible (not obligatory physically meaningful, reduce Ecut as much as possible), for which irrep fails with the same error. Post such file here, we will look.

lucabuia commented 1 year ago

Post such file here, we will look.

Here's the file I'm actually trying to use WFK.zip

and here is a way smaller one (very low Ecut, the folder also contains the abinit input file) irreptest_WFK.zip

lucabuia commented 1 year ago

I tried expressing the Ecut in eV in the Abinit input file, but I still get the same error :/

stepan-tsirkin commented 1 year ago

It has nothing to do with Ecut. That is a bug that is fixed in #58 ,

you may upgrade to irrep-1.8.2 to enjoy the fix.

btw, in most cases it is recommended to set Ecut in call to irrep significantly lower than what was actually used in the abinitio calculations, usually Ecut=50 is a good choice - the irreps are still identified correctly, but much faster. If time (nor memory) is not an issue, you do not need to set this parameter.

I am closing the issue, please reopen if you have more problems.