Hi Christoph,

Thanks for the detailed answer. I think we are pretty much on the same
page, but let me clarify again the two reasons I think the 'minimalist'
approach of only storing the fundamental domain is unnecessarily
complicated.

1) Necessary information for band structure calculations:
For a translation invariant model one indeed only needs the translational
unit cell's sites, on-site terms and hoppings inside the UC and to other
UC's specified by translations. Even if some point-group symmetry is
present, I see no way of going around this step of reconstructing the
translational UC from the 'minimal' data before performing useful
calculations, so I don't see a good reason to use the minimalist storage,
at least for the finalized systems.

2) Making sure the constructed Hamiltonian obeys the symmetry:
With translations only it's quite straightforward to check whether the
input terms of the Hamiltonian obey the symmetry, the only requirement is
that the on-site terms are Hermitian. As I detailed in my previous email,
this becomes much harder with point-group symmetries, both on-site and
hopping terms have to fulfil relatively complicated relations to be
compatible with the symmetry. This complex check is necessary even if we
insist on the minimalist approach. To me it seems more intuitive to make
sure when site/term is defined, all the checks are performed and all of its
symmetry images are also constructed. I think my uneasiness mostly comes
from the fact that it is quite hard to visualize the fundamental domain of
more complex space groups, making sure you only declare things inside one
fundamental domain seems hard to follow. For your diamond lattice example,
to me it's lot more straightforward to say "there is a hopping from the
site at (0,0,0) to the one at (1/4,1/4,1/4)", compared to "there's a
hopping from the site site at (0,0,0) to the site at (0,0,0) in the image
of the fundamental domain under (-Id,(1/4,1/4,1/4))".

You have a good point about removing terms, this would indeed become harder
to keep track of while making sure the symmetry is preserved. This
functionality would be a lot cleaner with the minimalist approach. I tend
to agree with you that the minimalist approach is more elegant, but I'm not
sure it's worth the added complexity.

Best,
Daniel

On 3 November 2016 at 17:52, Christoph Groth <christoph.gr...@cea.fr> wrote:

> Dániel Varjas wrote:
>
> (...)
>>
>> Considering all these complications, I'm not sure that storing hoppings
>> in the way you propose is feasible. As I understand, you would specify the
>> sites for the hopping by saying it connects site i in the fundamental
>> domain to site j in the image of the fundamental domain under some SG
>> symmetry g. I don't see why this representation would simplify calculations
>> and it's quite hard to keep track of it for humans, compared to just
>> specifying everything in the translational unit cell.
>>
>
> Thanks for this very clear analysis.  Perhaps you are right and storing
> the complete translational unit cell is the way to go. But then, isn't the
> difficulty of verifying that the provided translational unit cell indeed
> satisfies the declared symmetries comparable to the construction of the
> translational unit cell from the fundamental domain and said symmetries?
>
> In the end whether we chose to store only the fundamental domain or the
> full translational unit cell probably doesn't make a difference in terms of
> computing efficiency. (It could matter if, say, rotational symmetries can
> also apply to bigger structures, for example a large quantum dot.)  So we
> can choose whater is easier to work with.  I'm still not sure, however,
> *what* is easier.  What do you think?
>
> What does matter for sure, however, is which user interface is presented
> to the user who builds systems with symmetries.  The idea to only store the
> fundamental domain came naturally to me because this is what we’re doing in
> Kwant builders currently. (Only that there are no other symmetries but
> translational, hence fundamental domain = translational unit cell.)  When
> creating a system with symmetry in current Kwant, the user first specifies
> the symmetry and then performs actions on the system (=adding and removing
> sites/hoppings).  Kwant makes sure that these actions are done in a way
> that preserves the declared symmetries, e.g. adding a single site adds all
> of its images as well.  In practice this is implemented by storing only the
> fundamental domain.
>
> I assumed that this way of working also makes sense with symmetries other
> than translational.  (Of course there would be a way to plot the
> automatically generated unit cell.)  But I’m actually not sure.  What do
> you think?
>
> Perhaps a good example would be making a diamond lattice.  Is it easier to
> declare the full symmetries and specify a single atom, or to declare the
> symmetries and the the full unit cell?  The former seems cleaner, but also
> more abstract.  The latter is perhaps easier to imagine, but my first
> reaction is that it’s the inferior approach.
>
> However, if you can argue that systems with symmetries should be _stored_
> as complete translational unit cells, this will give us a good reason not
> to bother with the minimalist approach during construction as well.
>
> If we consider not only spatial but also internal symmetries this becomes
> even more complicated, but perhaps we can first try to come to a conclusion
> disregarding that.
>

Reply via email to