# Differences

This shows you the differences between two versions of the page.

 — documentation:ref:simpleindices [2015/11/21 12:33] (current) Line 1: Line 1: + ====== SimpleIndices ====== + ---- + + ====Basics==== + ''​SimpleIndices''​ represents indices of [[SimpleTensor]] and [[TensorField]]. It inherits all properties of [[Indices]] but does not sort indices., so indices in ''​SimpleIndices'' ​ appear exactly in that order as defined by the user: + + def indices = '​_pqrs^sp'​.si + println indices + ​ + + > _pqrs^sp + ​ + On the other hand, since indices of different [[IndexType|types]] have different mathematical nature, [[SimpleIndices]] are sorted according to the type (preserving relative ordering of indices of same type): + + println '​_{mn}^{\\beta\\alpha}_{ba\\alpha}'​.si + ​ + + > _{mnba}^{\beta\alpha}_{\alpha} + ​ + + All properties and methods of ''​SimpleIndices''​ leaves the relative ordering of indices unchanged. + + + ''​SimpleIndices''​ has ''​.symmetries''​ property which allows to define their permutational symmetries. + + ====Features==== + Since ''​SimpleIndices''​ is a subtype of [[Indices]],​ it inherits all its properties. However, ​ in contrast to [[Indices]],​ ''​SimpleIndices''​ and all its properties and methods preserve the relative ordering of indices. + + Consider examples. Parse ''​SimpleIndices''​ from string: + + def indices = '​^an_ab^m_pq^b'​.si + println indices + ​ + + > ^{an}_{ab}^{m}_{pq}^{b} + ​ + Get just free indices: + + println indices.free + ​ + + > ^{nm}_{pq} + ​ + Invert indices: + + println indices.inverted + ​ + + > _{an}^{ab}_{m}^{pq}_{b} + ​ + Get only contravariant indices: + + println indices.upper + ​ + + > ^{anmb} + ​ + Get only covariant indices: + + println indices.lower + ​ + + > _{abpq} + ​ + + Parse indices with multiple types: + + def indices = '​^AB_pqrs^C_A^sp'​.si + println indices + ​ + + > _{pqrs}^{spABC}_{A} + ​ + Get just Latin upper case: + + println indices.getOfType(LatinUpper) + ​ + + > ^{ABC}_{A} + ​ + Get first index: + + println indices[0].toStringIndex() + ​ + + > _{p} + ​ + Get first Latin upper index: + + println indices[LatinUpper,​ 0].toStringIndex() + ​ + + > ^{A} + ​ + Get several indices at a time: + + println indices[1, 3, 4] + ​ + + > _{qs}^{s} + ​ + Get range: + + println indices[1..4] + ​ + + > _{qrs}^{s} + ​ + + As one can see, all methods in the above examples return indices which have same relative ordering as in the initial object. + + ====Symmetries==== + Symmetries can be attached to a single ''​SimpleIndices''​ object by using ''​.symmetry''​ property: + + def indices = '​_abcdef'​.si + indices.symmetries.addSymmetry([[0,​ 1], [2, 3]].p) + indices.symmetries.addSymmetry([[0,​ 3, 5]].p) + println indices.symmetries.permutationGroup.order() + ​ + + > 60 + ​ + Symmetries of simple indices can be used in transformations like [[Symmetrize]] or other methods like [[GenerateTensor]] or [[Reduce]]. + + The ''​.symmetries''​ property return a container of [[documentation:​ref:​permutation| permutations]] and a corresponding [[PermutationGroup]]. The latter can be accessed by taking ''​.permutationGroup''​ property. + + It should be noted, that when specifying symmetries of simple tensors like + + '​f_abc'​.t.indices.symmetries.addSymmetry( [1, 0].p ) + ​ + these symmetries will be automatically attached to indices of all instances of tensor ''​f_abc'',​ i. e. ''​f_pqr''​ or ''​f_a^a_y''​ etc.: + + println '​f_pq^i'​.t.indices.symmetries.permutationGroup + ​ + + > Group( +[[0, 1]] ) + ​ + + On the other hand, when specifying symmetries of "​detached"​ indices: + + def ind = '​_abc'​.si + ind.si.indices.symmetries.addSymmetry( [1, 0].p ) + ​ + they will be attached just to the particular object (''​ind''​ in the above example). ​ + + ====See also==== + * Related guides: [[documentation:​guide:​tensors_and_indices]],​ [[documentation:​guide:​symmetries_of_tensors]] + * Reference material: [[documentation:​ref:​indices]],​ [[documentation:​ref:​indextype]],​ [[documentation:​ref:​simpletensor]],​ [[documentation:​ref:​tensorfield]],​ [[documentation:​ref:​permutation]],​ [[documentation:​ref:​symmetrize]],​ [[documentation:​ref:​generatetensor]],​ [[documentation:​ref:​reduce]],​ [[documentation:​ref:​permutationgroup]] + * JavaDocs: [[http://​api.redberry.cc/​redberry/​1.1.9/​java-api/​cc/​redberry/​core/​indices/​SimpleIndices.html| SimpleIndices]] + * Source code: [[https://​bitbucket.org/​redberry/​redberry/​src/​tip/​core/​src/​main/​java/​cc/​redberry/​core/​indices/​SimpleIndices.java|SimpleIndices.java]]