[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