|
[交流]
【分享】How to get G-vectors and eigenvectors
原帖网址:http://blog.sina.com.cn/s/blog_5f15ead20100gfrd.html
I am very interested in get the detailed information of basic vectors and their coefficients (that is wavefunction). The reason is very simple: basic vector and their coefficients are directly related with KS equation. Unfortunately, these dates are all stored in binary files. Although I can plot electronic density in Xcrysden, I can not get the wavefunction. Today, I notice a discussion in PWscf Forum, which is concerned with how to convert binary date to readable format. Although I still do not know the transformation detail,I know I can do it
The following is quoted from PWscf Forum.
in general you can convert all the .dat files from the $prefix.save directory (or subdirectories) into xml using the iotk conversion tool (which is linked in ~espresso/bin )
1: ~espresso/bin/iotk convert file.dat file.xml
I think this utility is particularly useful to understand which and how are the data stored in the QE save directory.
Then, you can parse the xml file if you like. My personal suggestion would be to do that only if you need this piece of
information for a very simple postprocessing code, because parsing xml from fortran, even if not impossible, is not simple...
Instead, I think the easiest way to go is to use the qexml library (distributed with QE in ~espresso/PP/qexml.f90) which is exactly meant to provide tools to read (and in principles also write) QE datafiles...
The library must be initialized specifying the output directory, prefix, and few other informations, and then it directly provides routines to read all the piece of data you need. Some examples about how to use it are given in the WanT code(www.wannier-transport.org); just grep qexml_ in the sources.
2:In terms of the usage of the library, you can have a look at a simple example at http://web.mit.edu/~ferretti/www/Test_QEXML.tgz instructions to compile, run and check the test are given inside the tarball.
There is a proble in the Makefile,
change the lines
$(espresso_home)/PP/qexml.o:
cd $(espresso_home)/PP
make qexml.o
into
$(espresso_home)/PP/qexml.o:
cd $(espresso_home)/PP; make qexml.o
Then the code of Test_QEXML work well. But it only give a brief information about G-vector and eigenvector. Therefore, the full information can only be obtained by espresso/bin/iotk convert file.dat file.xml |
|