aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11/TensorSymmetry
Commit message (Collapse)AuthorAge
* bug #1596: fix inclusion of Eigen's header within unsupported modules.Gravatar Gael Guennebaud2018-09-17
|
* Refactor the unsupported CXX11/Core module to internal headers only.Gravatar Gael Guennebaud2016-04-26
|
* Fix compilation for CXX11/Tensor module if unsupported is not in include pathGravatar Christian Seiler2014-06-04
|
* C++11/Tensor: Fix copyright headersGravatar Christian Seiler2013-11-16
|
* CXX11/TensorSymmetry: add symmetry support for Tensor classGravatar Christian Seiler2013-11-14
Add a symCoeff() method to the Tensor class template that allows the user of the class to set multiple elements of a tensor at once if they are connected by a symmetry operation with respect to the tensor's indices (symmetry/antisymmetry/hermiticity/antihermiticity under echange of two indices and combination thereof for different pairs of indices). A compile-time resolution of the required symmetry groups via meta templates is also implemented. For small enough groups this is used to unroll the loop that goes through all the elements of the Tensor that are connected by this group. For larger groups or groups where the symmetries are defined at run time, a standard run-time implementation of the same algorithm is provided. For example, the following code completely initializes all elements of the totally antisymmetric tensor in three dimensions ('epsilon tensor'): SGroup<3, AntiSymmetry<0,1>, AntiSymmetry<1,2>> sym; Eigen::Tensor<double, 3> epsilon(3,3,3); epsilon.setZero(); epsilon.symCoeff(sym, 0, 1, 2) = 1;