Guangping, Andrei,
I recently added an output file called SystemLabel.ORB_INDX
that documents what orbital corresponds to each index in the
sparse matrices S, H, and D. See below an example.
Best wishes, Jose

graphene2.ORB_INDX:
52 4212 = orbitals in unit cell and supercell. See end of file.

io ia is spec iao n l m z p sym rc isc iuo
1 1 1 C 1 2 0 0 1 F s 6.254 0 0 0 1
2 1 1 C 2 2 0 0 2 F s 3.510 0 0 0 2
3 1 1 C 3 2 1 -1 1 F py 8.192 0 0 0 3
4 1 1 C 4 2 1 0 1 F pz 8.192 0 0 0 4
5 1 1 C 5 2 1 1 1 F px 8.192 0 0 0 5
6 1 1 C 6 2 1 -1 2 F py 3.870 0 0 0 6
7 1 1 C 7 2 1 0 2 F pz 3.870 0 0 0 7
8 1 1 C 8 2 1 1 2 F px 3.870 0 0 0 8
9 1 1 C 9 2 2 -2 1 T Pdxy 8.192 0 0 0 9
10 1 1 C 10 2 2 -1 1 T Pdyz 8.192 0 0 0 10
11 1 1 C 11 2 2 0 1 T Pdz2 8.192 0 0 0 11
12 1 1 C 12 2 2 1 1 T Pdxz 8.192 0 0 0 12
13 1 1 C 13 2 2 2 1 T Pdx2-y2 8.192 0 0 0 13
14 2 1 C 1 2 0 0 1 F s 6.254 0 0 0 14
15 2 1 C 2 2 0 0 2 F s 3.510 0 0 0 15
...
4211 324 1 C 12 2 2 1 1 T Pdxz 8.192 -1 -1 0 51
4212 324 1 C 13 2 2 2 1 T Pdx2-y2 8.192 -1 -1 0 52

Column codes:
io = Orbital index in supercell
ia = Atom to which orbital belongs
is = Atomic species index
spec = Atomic species label
iao = Orbital index within atom
n = Principal quantum number
l = Angular mumentum quantum number
m = Magnetic quantum number of (real) orbital:
m<0 => sin(m*phi), m>=0 => cos(m*phi)
z = Zeta index of orbital
p = Is this a polarization orbital? (False|True)
sym = Symmetry name of real orbital
rc = Cutoff radius of orbital (Bohr)
isc = Unit cell indexes to which orbital belongs:
center(io) = center(iuo) + sum_(i=1:3) cell_vec(i) * isc(i)
iuo = Equivalent orbital in first unit cell


El 24/07/10 07:50, apost...@uni-osnabrueck.de escribió:
Dear Guangping Zhang,
I do not know the details, and do not have much to add.
Still:
In the periodic case, one needs to keep trace of the overlaps,
and hence DM elements, with atoms in neighbouring unit cells;
the corresponding bookkeeping is done through the construction
of "naive supercell" - search for these words in the output.
So - yes, the big numbers refer to basis functions in translated cells.
This is one of the reasons DM is not
stored in a straightforward square form
(another reason being its sparceness), but in a "rectangular" form.
Its lines run through ALL basis functions in the unit cell, and
the columns - so to say, through all basis functions in "naive supercell".
However, they are not written explicitly, but only non-zero elements
with their adresses. Note that non-zero elements are numbered as
they come, they don't have to follow in the order of increasing basis
functions. If you'd recover the full rectangular form (with
a lot of zeros) you'll probably see that the its left-hand square,
i.e. the "unit-cell only" part of it, is indeed Hermitian (so I think).
In my DMtune tools, I tried to manipulate the DM elements,
either on-site (the whole block refering to a given atom),
or the whole matrix.
I think a useful exercise, in order to realy understand the structure
of DM file, would be to write a "deciphering machine" - explicitly
identifying each appearing non-zero element by
(cell/atom/basis function) on both sides.

Good luck

Andrei Postnikov


Sorry to trouble you again.I find in the *DM file for periodical system.
For each row,the column index, some times, not only from smaller to bigger
but also appear a number bigger than Norbit(total number of basis in a
unit cell).Just like this:
           1
           2
           3
         .....
          25
          26
         828
         830
         831
         832
          32
          33
          34
          35
if the total number of the basis in a unit cell is 398, 828 indicates the
32th (mod(828,398)) basis in the neighbour unit cell?
Thanks in advance!
2010-07-24

Indeed,I read the iodm.F code for many times and think hard on the
structure of the *.DM file,I convert it to formatted style,and get a
little information.I thought the *.DM file was arranged according to
columns,firt column ,second column ,...,in a one dimenssion array.As you
say,it is arranged according to rows,firt row,second row,and so on ,in a
one dimenssion array.However it is the same if the *.DM is Hermitian
conjugate since (DM)ij=(DM)ji.But it is not true all time(am I right?
Since it is probably only Hermitian at complex situation).So this issue is
serious.

As you say the *.DM file can divided into there blocks,first block
containing the total number basis functions (say Norbit) in the
calculation and the total spin.Just two integers in the front of the file.
But I wonder to konwn if the system is periodical, the first number seems
to be only the basis number in a unit cell.
So my question is :Is *.DM contains only the information in a unit cell?

The second block of *.DM contains Norbit integers.I think each number
stands each row,for there are Norbit rows in the *.DM file.Each number
indicates the index of column for each non-zero element of the row? Each
row have a small block,and there are Norbit small block in the second
block.

The third block of *.DM is the DM element corresponding to the list in
second block.

If the consideration is right above.There is another question:in the
second block, for each row,the column index, some times, not from smaller
to bigger.Just like this:
           1
           2
           3
           4
           5
           6
           7
           8
           9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          32
          33
          34
          35
          36
          27
          28
          29
          30
          31
In addition to this ,this is a periodical system in there direction.

Now I want to extract a part of the *.DM,belonging to a rang from basis_i
to basis_f.And then construct a new *.DM then feed it to siesta for the
subsytem whose basis is from basis_i to basis_f.
So for each row,which column index should I pick out?
( Is this criterion enough?: index_of_basis_i<=index<=index_of_basis_f)

Thank in advance!


2010-07-24



Guangping Zhang
---------------------------------------------------------
定时�醒您处�邮件�高效办公�费心,请用网易闪电邮(fm.163.com)�



�件人: apost...@uni-osnabrueck.de
��时间: 2010-07-24 00:21
主 题: Re: [SIESTA-L] about the DM file
收件人: siesta-l@uam.es



Dear siesta users and developers:
Now I want to konw the structure of the DM file.So I convert it to DMF
file which is readable.
But I have a question about the meaning of the integers after the number
of orbitals ,spins and a serial integer numbers whose number is the same
with the number of orbitals.But the following integer numbers,I am
puzzling.What does they mean,they do not arrange from smaller to
bigger,they some times go backward then forward.
Who can tell me what does they mean?
It is a urgency.
Hi,
the reading/writing from the DM file is organized in iodm.F
However, it is somehow difficult to understand it at once.
In a nutshell, DM is stored as a sparse matrix - for each basis
function (say a line in the density matrix),
the list follows of non-zero elements, followed by their values.
Moreover the lists are created which relate the column number of each
non-zero element to which basis function it refers to.
I "streamlined" a bit the i/o procedure in my DMtune suite
http://www.home.uni-osnabrueck.de/apostnik/Software/DMtune.tar.gz
, adding some comments (but not much).

Best regards

Andrei Postnikov

Responder a