[Wien] Some questions about the vec2ascii program
Elias Assmann
elias.assmann at gmail.com
Sun Oct 26 15:26:20 CET 2014
On 10/25/2014 09:42 PM, Majid Yazdani wrote:
> If one would like to shift up the unoccupied eigenvalues by a constant
> for a specific test, one would change the case.vector_* files. If seems
> that for this purpose, it is better to do it by case.energy_* files.
> But, case.energy will not be read by optic programs, e.eg
> <http://e.eg/>., joint, which will be not the case for case.vector_*
> files. Therefore, for performing some tests, sometimes it is necessary
> to change the case.vector_* files. The problem is that these files are
> written in binary format and not plain text.
I do not know where ‘joint’ gets its eigenenergies from, but ‘kram’ can
take an “energy shift” (a.k.a. “scissors operator”) option. Maybe that
can help.
> But, why the size of the case.vector_* files after converting to the
> plain text (by vectoascii.f) is extremely larger than the case.evergy_*
> files. Maybe the contain something different information.
Certainly. ‘energy’ contains only the eigenvalues (one number per
state), ‘vector’ the eigenvectors (many coefficients per state).
> Here, I am a little bit confused. If the above numbers represent the
> eigenvalues, why the magnitudes of them are close to zero, but the
> magnitudes of the numbers given in the case.energy_* are between -7 Ry
> to 2 Ry (around the energy window in case.in1c)?
If you need to know precisely which information is in the ‘vector’ file
in what order, I think your best bet is to read the code that writes or
reads them. I cannot tell you that without looking it up myself.
> If you think that there is another better way to shift up the unoccupied
> energies so that the changed made in energies can be read by the optic
> programs, please let us know. Maybe here Peter can make more clear the
> problem.
Sounds like the scissors operator should do it.
>>Not that I know of. Of course, you can try “reversing” the input code …
> I believe you are the best to reverse reads and writes in a suitable
> manner in the vec2ascii.f so that the procedure is revered, as we really
> do not know the format of the original vector files.
This task more or less just means replacing every READ() with a WRITE().
> What is the original format of the case.vectores which are produced by
> the wien2k code? Are they produced as plain text files (or other format
> different from the binary) and then stored as binary files or they are
> produced as binary files at the first by the wien2k code?
They are written in binary. In the ‘def’ files, some files are listed
as ‘formatted’, this means plain-text and they are written using FORMAT
strings; others are ‘unformatted’, this means binary and no FORMATs in
READ()/WRITE().
If this is the way you want to do it, I would just read the vector
record by record and write it back out (in binary) to a new file
immediately, applying whatever changes you need. If you wanted to get
fancy, you could probably use STREAM access to replace only the changed
records in the original file in-place.
Elias
More information about the Wien
mailing list