It could be useful to have a function that computes smaller process tensors (in MPO form) from larger ones by:
- "tracing out" late time steps
- "tracing out" early time steps (this could depend on the system Hamiltonian and Controls)
- coarse graining the time steps (for example: 3 timesteps with dt=0.02 become one time step with dt'=0.06)
- truncating the MPO bonds with relative and absolute cutoffs.
The function header would then look like this:
def reduce_process_tensor(pt, system=None, control=None, start_index=1, end_index=-1, coarse_graining=1, epsrel=None, chi=None):
This could be particularly useful if one has a library of different process tensors (as I proposed in #119). Then the library only needs to hold the most accurate, fine, and long process tensors. The coarser ones could then be straightforwardly generated from the finer ones.
It could be useful to have a function that computes smaller process tensors (in MPO form) from larger ones by:
The function header would then look like this:
This could be particularly useful if one has a library of different process tensors (as I proposed in #119). Then the library only needs to hold the most accurate, fine, and long process tensors. The coarser ones could then be straightforwardly generated from the finer ones.