====== SimpleTensor ======
----
====Basics====
''SimpleTensor'' represents a simple tensors like ''f_mn'' of symbols like ''x'' etc. Like any other expression, it inherits all properties of [[Tensor]]. ''SimpleTensor'' adopts the following convention on its indices: the indices of ''SimpleTensor'' ([[SimpleIndices]]) are sorted by their [[documentation:ref:IndexType|types]], but the relative ordering of indices within a particular type is same as defined by the user:
def t = 'f_cba^\\alpha_AB'.t
println t.indices
> _{cbaAB}^{\alpha}
The relative ordering is not changed even if tensor has [[documentation:guide:symmetries_of_tensors|symmetry property]]; in latter case Redberry uses algorithms provided by [[documentation:guide:mappings_of_indices]] to compare expressions instead of trying to put expression in canonical form.
The distinctive feature of simple tensors is the presence of [[documentation:guide:symmetries_of_tensors|symmetries]]. In order to bind symmetries to simple tensor, one can use ''addSymmetry'' method or directly call ''addSymmetry'' from simple tensor [[SimpleIndices]]:
addSymmetry 'f_pqr', [1, 0].p
//or equivalently
'f_klm'.t.indices.symmetries.addSymmetry( [1, 0].p )
Once specified, symmetries will be automatically set up for all same simple tensors (''f_abc'' or ''f_qrs'' etc.) whichever way they are created.
====Details====
In order to get name of simple tensor one can get ''.stringName'' property:
def t = 'f_abc^\\alpha_AB'.t
println t.stringName
> f
On the other hand, this name does not reflect the mathematical nature of simple tensors, and for example two completely different tensors ''f_a'' and ''f_ab'' have same ''stringName''.
The unique identifier of ''SimpleTensor'' which encodes its mathematical nature is an integer property ''.name'': two simple tensors have same ''.name'' if and only if they have same ''.stringName'' and same //structure of indices//:
assert 'f_ab'.t.name == 'f_bc'.t.name
assert 'f_ab'.t.name != 't_bc'.t.name
assert 'f_ab'.t.name != 'f_b'.t.name
assert 'f_ab'.t.name != 'f_AB'.t.name
For further details see API.
====See also====
* Related guides: [[documentation:guide:tensors_and_indices]], [[documentation:guide:symmetries_of_tensors]]
* Reference: [[documentation:ref:tensor]], [[documentation:ref:simpleindices]], [[documentation:ref:tensorfield]]
* JavaDocs: [[http://api.redberry.cc/redberry/1.1.9/java-api/cc/redberry/core/tensor/SimpleTensor.html| SimpleTensor]]
* Source code: [[https://bitbucket.org/redberry/redberry/src/tip/core/src/main/java/cc/redberry/core/tensor/SimpleTensor.java|SimpleTensor.java]]