lars.musland at smn.uio.no
Wed Jan 27 14:25:17 UTC 2016
a short reply to Cristophs answer and a few further comments and questions
Christoph Groth wrote:
> Hi Lars,
> Thanks a lot for your comments! I’m doing fine now, but I was ill on
> Friday, hence the latish reply.
> I put the others in CC as they might want to comment as well. (I left
> all of Lars' message in place.) Lars, if you like, you could re-send
> your original message to the kwant-discuss list. (I think it’s general
> enough for kwant-discuss, but kwant-devel would be also OK.) I would
> then re-reply to it there and in this way we could perhaps have a
> broader discussion. But I also do not mind if this remains non-public.
> We have been also discussing a lot about (non-Abelian) symmetries in
> Kwant lately. I think we’ve learned a lot so far, but we’ve also
> discovered quite some subtle points.
> One way that may work out is to specify a space group as a semidirect
> product of a finite point group and an infinite Abelian group of
> translations. But, let’s discuss first whether it’s at all worthwhile
> to have low-level non-Abelian symmetries in Kwant.
> Lars Musland wrote:
>> I hope you are doing well. We've lately been thinking a little about
>> the implementation of general spatial symmetries, and have come to a
>> conclusion of sorts. Maybe somewhat diverging from your present plans
>> we think that a generalization to rotational symmetries at the lowest
>> level of Kwant is unneeded and maybe not even the best way to proceed.
>> Our suggestion is that you instead generalize the low level
>> implementation only to n-dimensional translational symmetries while
>> instead implementing rotational symmetries at the lattice-level (maybe
>> as a new type of SiteFamily). These generalizations would then be
>> completely isolated tasks, which would allow you to quickly finish the
>> (fairly) easy job of generalizing the low level translational symmetry
>> without (yet) having to considerer the much more complicated task of
>> generalizing to non-abelian space groups.
>> The reason why we think a generalization to rotational symmetry is
>> unnescessary at the low level is as follows: There are basically two
>> benefits of utilizing symmetry in a code like Kwant. The first is that
>> it makes the job of setting up models easier for the user: If
>> hopping-parameters are related to each other by symmetry-operations,
>> then the user will only need to define a small subset of these. For
>> this benefit however, an implementation at a higher level will work
>> just as well, and this might even be both easier and more flexible.
> I agree with your analysis under the assumption that rotational
> symmetries are indeed not useful for speeding-up significant
> calculations. It seems to me, however, that they would be useful at
> least for the following applications:
> • Calculation of n-d band structure: Only a fraction of the BZ needs to
> be calculated, the remainder is given by symmetry. For a square
> lattice (p4mm wallpaper group) this give an 8-fold speed-up. The
> speedup is greater in 3-d.
Yes, the speedup from this would definitely be great. But as Espen also commented I do not think there is any need for a low level implementation to accomplish this. One can easily (more or less) have a higher lever implemetation consider the desired set of k-points, determine which ones are related by symmetries and then pass only the largest nescessary subset on to the solver. With other words, unlike the case with translational symmetries there is no need for the solver itself to have an understanding of this symmetry, so that an implementation of this at the very lowest level seems unnescessary.
> • Calculation of Green’s functions of infinite systems. We have a PhD
> student (Mathieu Istas) who is working on doing calculations that take
> the Green’s function of some infinite clean bulk as a starting point.
> (As a second step, impurities are added to that bulk etc.) The
> calculation of that Green’s functions G(x, x’) involves independent
> numerical integrations in energy for each (x, x’) pair. If we know
> that the Hamiltonian is invariant under a certain point group, this
> should be make it possible to speed-up this calculation by a
> considerable factor (e.g. 8 for a square lattice).
Here I do not completely understand what you mean. I think I would need a longer explanation about what you are actually wishing to do in order to soundly judge whether this requires low level implementation. Nevertheless, I think the key question is the following: Is the symmetry to be used to actually reduce the size of the hamiltonian being operated upon by the solvers? If it is not, then it seems the solvers themselves do not require a description of the symmetry, so that again a low level implementation seems unneeded. If on the other hand you are planning to use it in this way, then I reffer back to my point below, where I state that I think it is impossible to accomplish this reduction utilizing both translational and rotational symmetry at the same time. However, I realize now that this particular point must be modified a little. See below.
> • The following point is basically the same as the previous point, only
> put a bit differently: let’s say that we want to calculate the
> properties of some huge clean system whose bulk has some point symmetry
> (e.g. an irregular quantum dot cut out from clean graphene). Instead
> of building a huge Hamiltonian matrix, we can also start from the
> Green’s function of the bulk and consider the borders of the dot as
I think the previous comment also applies here.
> Does everybody agree that these applications are useful? Can anyone
> think of others?
>> The second benefit of utilizing symmetry is that it allows a speedup
>> of the calculation itself, as well as a reduction of
>> memory-requirements by using the symmetry to block-diagonalize the
>> Hamiltonian before the nummerical treatment. This type of
>> symmetry-utilization will obviously need to be implemented at a low
>> level. A key point here however, is that this reduction will in any
>> case only work if the symmetry group is abelian: The
>> block-diagonalization of the Hamiltonian is possible because the
>> Hamiltonian comutes with the symmetry-opperator, so that by a well
>> known theorem they have a common diagonalization. However, if one is
>> to do this using multiple symmetries at the same time, then all of the
>> symmetry operators must also commute with each other. Thus, if one has
>> a non-abelian symmetry group, then one can at best achieve this
>> reduction using one abelian subgroup at a time. As long as one is
>> dealing with an infinite spatial symmetry, the best choise of this
>> subgroup would obviously always be the subgroup of translations.
Actualy, I am now aware that my above conclusion that one can not achieve block diagonalization utilizing a full non-abelian symmetry is wrong: For instance a system with spherical symmetry can be block-diagonalized in terms of the quantum numbers l and m, which is obviously better than what could be acchieved with one of the abelian subgroups (being rotation around an axis). I simply don't know enough group theory to enter a discussion of how that generalizes (or not) to full space groups. But I think my point can still be justified in a simpler way: If one forces the wavefunction to have a particular translational symmetry (a defined value of k), then this will usually break the entire remaining point symmetry. This is the case except for a small subset of special k-points. This subset is however so small that unless one has a particular interest in it, the total benefit in efficiency will be minimal.
> I agree. (The case of finite systems with some rotational symmetry
> could be interesting sometimes, but I think on it’s own it’s not enough
> to justify non-translational symmetries in Kwant.) The question now is
> whether the above-mentioned points are enough to justify
> rotational-symmetries in Kwant.
>> It sems then that there are normally no benefits in efficiency from
>> implementing rotational symmetries at a low level, while the benefits
>> in user friendliness can also be achived at a higher level. This is
>> why this aproach is our suggestion to you. There could of course be
>> considerations that we are not aware of, and as developers of Kwant
>> you are obviously best fitted to make the decission. But this is in
>> any case our innput.
> I think by now we’ve spent enough effort to be able to do new low-level
> systems both with and without non-Abelian symmetries. We should only
> implement non-Abelian symmetries if they are useful.
I will simply remake my point above: The key question is whether the solver itself requires an "understanding" of the symmetry. In the case of translational symmetries this is the case, as symmetry information in the form of a k-value is passed directly to the solver. But if I am correct in my above conclusion, then one would gain very little from doing the same also with point symmetries. Further, it seems to me that if the solver does not need acces to this information, then it is better to implement it at a higher level. The question isn't really whether non-Abelian symmetries are useful. They definitely are. The question is whether it is usefull to implement them at low level instead of in the form of something like a generalization of your current lattices. Most of your current plans and considerations for implementing non-Abelian symmetries could probably also be utilized at that level.
More information about the Kwant-devel