Skip to content

Accelerate gauge transformation

Sascha Jähnigen requested to merge accelerate_gauge into master

We have improved the speed of assembling the distributed gauge in the case of non-tetragonal cells. Before, many coordinate transformations to account for nearest neighbour calculations were required, slowing down the code. Now, coordinate transformation from Cartesian into cell-internal coordinates is carried out a priori, using an existing implementation originally used only in the volume class (_ltransform/_rtransfrom; streamlines). This drastically reduces the number of coordinate transformations, likewise periodic boundaries can be treated with the "cheap" method of common tetragonal cells. Especially tricky was the treatment of the magnetic moment, which has the position operator appearing in a cross product. For these instances the transformation routine accepts the keyword "angular" which switches the transformation according to the equality: Ma × Mb = det M · transpose(inv(M)) · (a × b) The new code is approx. 25% faster for a hexagonal cell.

Merge request reports