~kovalp/siesta/4.1

Viewing all changes in revision 1067.

  • Committer: Nick Papior
  • Date: 2019-02-13 17:39:22 UTC
  • Revision ID: nickpapior@gmail.com-20190213173922-fpudhk85l13eoios
Added a new Bloch-expansion algorithm

It does exactly the same thing but is somewhere between 1 and 2 orders of
magnitudes faster.

The reason is that the Bloch-expansion has a Toeplitz structure allowing for
reduced calculations and copying data around. This is now being done at
two levels:

1) For Bloch expansions along 1 dimension we have an efficient algorithm.
2) For Bloch expansions along 2 dimensions we have an efficient algorithm.

Both are also better parallelized using OpenMP. Even for simple Bloch expanions
of ~5 I see a halving of execution time of the methods. This could potentially be
very important for large scale TB calculations, but also for regular TS calculations.

This also adds warnings when using the repetition of bloch expansion since
the algorithm only works for tiling constructs. Hence, when going from repeating
to tiling one would find an even larger performance improvement.

Added a better error message when the electrode coordinates are not coinciding.
A direct comparison between the device and electrode coordinates are
now being done.

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: