QuEraComputing / Bloqade.jl

Package for the quantum computation and quantum simulation based on the neutral-atom architecture.
https://queracomputing.github.io/Bloqade.jl/dev/
Other
182 stars 37 forks source link

norm-preserving methods #14

Open Roger-luo opened 3 years ago

Roger-luo commented 3 years ago

currently we use Vern7 or Vern8 method to reach numerical precision (~1e-7, 1e-8) in our ODE solver based emulation (https://github.com/Happy-Diode/ContinuousEmulator.jl/blob/master/src/ContinuousEmulator.jl#L137), however such methods do not guarantee the stability of norm, as a result in long time emulation we may get inaccurate result, e.g in our adiabatic MIS experiment emulation, we get a wrong negative error ratio at large time (~4us).

Temperary solution is to normalize the state every time step which would slow down the emulation and not necessary, better ways of this is to use a midpoint energy-preserving (e.g simpletic methods) in our ODE solver. See also VII and VIII in https://link.springer.com/content/pdf/10.1007%2F3-540-30666-8.pdf

There is https://diffeq.sciml.ai/stable/solvers/ode_solve/#GeometricIntegrators.jl but I'm not sure which method performs better at the moment, a benchmark study would be necessary.

Roger-luo commented 3 years ago

we have some partial support of norm perseving methods now, but as a backlog this results in a ~40x slow down and doesn't work on GPU since the callback is a projection needs scalar index