Recent Changes - Search:




The mp-reflect command performs the spatial reflection of an MPS.


mp-reflect [options] <input-psi> [output-psi]



show help message

-f, --force

overwrite the output file, if it exists


The mp-reflect command takes an input wavefunction file, preforms the spatial reflection of the MPS, and writes it to the output file. If the output file isn't specified, then the reflection is performed in-place, overwriting the old input file.

If the output file already exists, then mp-reflect will refuse to overwrite it, unless you specify also the --force option.


  1. Calculate the reflection of psi1, and save it as psi2

    mp-reflect psi1 psi2

    If psi2 already exists, then this will fail with an error, leaving the existing file psi2 untouched. To force overwriting psi2, add the -f option.

Implementation notes

Given an MPS, that may be a unit cell of an iMPS, or a finite MPS, or an IBC MPS,

{$$A_1^{s_1} A_2^{s_2} \cdots A_N^{s_N}$$}

the spatial reflection is given by the MPS sequence

{$$A_N^{s_N T} A_{N-1}^{s_{N-1}T} \cdots A_1^{s_1 T}$$}

That is, transpose each A-matrix, and reverse the ordering.

With good quantum numbers, the transpose operation needs to be modified. This is because the matrix elements of an operator that transforms irreducibly under some symmetry satisfy a quantum number constraint, for example with particle number symmetry suppose we have a particular A-matrix {$A^1$} representing a local particle state. Then the non-zero matrix elements {$A_{nm}^1$} satisfy the quantum number constraint {$n=m+1$}. However if we take the transpose, {$A^{1T}$} then it doesn't satisfy any more this sum rule, since we now have {$(A^{1T})_{nm}$} with {$n=m-1$}. To get around this, we perform the 'flip transposition', which is a flip of the quantum numbers in the auxiliary basis of the MPS, {$m \rightarrow m' = -m$}, {$n \rightarrow n' = -n$}. Now we have {$n' = m'+1$}, and the A-matrix has the correct symmetry.

In practice, this is implemented in the toolkit as A'[i] = flip_conj(adjoint(A[i])), where the adjoint is the tensor adjoint, and flip_conj is the quantum number flip + complex-conjugation. Both of these operations apply a complex-conjugation, which cancel out leaving just the transpose.

Edit - History - Print - Recent Changes - Search
Page last modified on July 25, 2016, at 07:10 PM