Re-using previously computed propagators

Topics related to Spinach package
Post Reply
Posts: 49
Joined: Tue Jul 13, 2021 8:33 am

Re-using previously computed propagators

Post by faq_user »

I have been working for a while on some MAS NMR pulse sequences that include a large amount of operations done in a cycle (like RFDR, that may include many cycles of pulses and delays for each point collected). I have been wondering for a while why the running time is extremely longer than SIMPSON and realized that it is because in SIMPSON one can save such a large set of repetitive propagators as one that can be re-used throughout the sequence. Is there a simple way to implement that operation over a large set of propagators?
Posts: 72
Joined: Mon Mar 29, 2021 4:26 pm

Re: Re-using previously computed propagators

Post by kuprov »

Try the following:

(a) adding ‘caching’ to sys.enable – it turns on propagator caching: ... or_caching

(b) using step() instead of evolution() – that avoids matrix exponentiation (see respiration.m and mqmas.m for examples):

As you likely know already, MAS Hamiltonians are time-independent in Spinach, so only the pulse sequence events need to be applied – there is no need to slice up the rotor period.
Post Reply