aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11/src/TensorSymmetry
Commit message (Collapse)AuthorAge
* Fix most Doxygen warnings. Also add links to stable documentation from ↵Gravatar Christoph Hertzberg2018-10-19
| | | | | | | unsupported modules (by using the corresponding Doxytags file). Manually grafted from d107a371c61b764c73fd1570b1f3ed1c6400dd7e
* Fix a lot of Doxygen warnings in Tensor moduleGravatar Christoph Hertzberg2018-10-09
|
* Fix typos found using codespellGravatar Gael Guennebaud2018-06-07
|
* bug #1167: simplify installation of header files using cmake's ↵Gravatar Gael Guennebaud2016-08-29
| | | | install(DIRECTORY ...) command.
* Backout changeset 690bc950f70c61075d396671e63480bbd64bb297Gravatar Gael Guennebaud2016-01-22
|
* fix clang warningsGravatar Jan Prach2016-01-20
| | | | "braces around scalar initializer"
* Added CMake support for Tensor module. CMake now installs CXX11 Tensor ↵Gravatar Abhijit Kundu2015-02-26
| | | | module like the rest of the unsupported modules
* unsupported/TensorSymmetry: factor out completely from Tensor moduleGravatar Christian Seiler2014-06-04
| | | | | | | | | Remove the symCoeff() method of the the Tensor module and move the functionality into a new operator() of the symmetry classes. This makes the Tensor module now completely self-contained without symmetry support (even though previously it was only a forward declaration and a otherwise harmless trivial templated method) and also removes the inconsistency with the rest of eigen w.r.t. the method's naming scheme.
* unsupported/TensorSymmetry: make symgroup construction autodetect number of ↵Gravatar Christian Seiler2014-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | indices When constructing a symmetry group, make the code automatically detect the number of indices required from the indices of the group's generators. Also, allow the symmetry group to be applied to lists of indices that are larger than the number of indices of the symmetry group. Before: SGroup<4, Symmetry<0, 1>, Symmetry<2,3>> group; group.apply<SomeOp, int>(std::array<int,4>{{0, 1, 2, 3}}, 0); After: SGroup<Symmetry<0, 1>, Symmetry<2,3>> group; group.apply<SomeOp, int>(std::array<int,4>{{0, 1, 2, 3}}, 0); group.apply<SomeOp, int>(std::array<int,5>{{0, 1, 2, 3, 4}}, 0); This should make the symmetry group easier to use - especially if one wants to reuse the same symmetry group for different tensors of maybe different rank. static/runtime asserts remain for the case where the length of the index list to which a symmetry group is to be applied is too small.
* 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;