@@ -14,9 +14,12 @@ using NamedDimsArrays:
1414 NamedDimsArray,
1515 dename,
1616 dimnames,
17+ mapnameddimsindices,
1718 name,
1819 named,
1920 nameddimsindices,
21+ randname,
22+ replacenameddimsindices,
2023 setname,
2124 setnameddimsindices,
2225 unname
4346 tags:: TagSet = TagSet ()
4447 plev:: Int = 0
4548end
46- NamedDimsArrays. randname (n:: IndexName ) = IndexName ()
49+ NamedDimsArrays. randname (n:: IndexName ) = IndexName (; tags = tags (n), plev = plev (n) )
4750
4851id (n:: IndexName ) = n. id
4952tags (n:: IndexName ) = n. tags
@@ -55,6 +58,7 @@ addtags(n::IndexName, ts) = settags(n, tags(n) ∪ tagset(ts))
5558setprime (n:: IndexName , plev) = @set n. plev = plev
5659prime (n:: IndexName ) = setprime (n, plev (n) + 1 )
5760noprime (n:: IndexName ) = setprime (n, 0 )
61+ sim (n:: IndexName ) = randname (n)
5862
5963function Base. show (io:: IO , i:: IndexName )
6064 idstr = " id=$(id (i) % 1000 ) "
@@ -99,6 +103,7 @@ addtags(i::Index, tags) = setname(i, addtags(name(i), tags))
99103prime (i:: Index ) = setname (i, prime (name (i)))
100104Base. adjoint (i:: Index ) = prime (i)
101105noprime (i:: Index ) = setname (i, noprime (name (i)))
106+ sim (i:: Index ) = setname (i, sim (name (i)))
102107
103108# Interface
104109# TODO : Overload `Base.parent` instead.
256261# `replacenameddimsindices`/`mapnameddimsindices`.
257262prime (a:: AbstractITensor ) = setinds (a, prime .(inds (a)))
258263noprime (a:: AbstractITensor ) = setinds (a, noprime .(inds (a)))
264+ sim (a:: AbstractITensor ) = setinds (a, sim .(inds (a)))
265+
266+ function replaceinds (a:: AbstractITensor , replacements:: Pair... )
267+ return replacenameddimsindices (a, replacements... )
268+ end
269+
270+ function replaceinds (f, a:: AbstractITensor )
271+ return replacenameddimsindices (f, a)
272+ end
273+
274+ function mapinds (f, a:: AbstractITensor )
275+ return mapnameddimsindices (f, a)
276+ end
259277
260278using VectorInterface: VectorInterface, scalartype
261279VectorInterface. scalartype (a:: AbstractITensor ) = scalartype (unallocatable (a))
0 commit comments