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