As it can be seen from this code snippet, the TDGenerator object can be called with a time argument that results in a tensor representing the corresponding generator at some time t. Now it is easy to pass this TDGenerator object to dynamiqs or krylov solvers to actually get the time evolution of the system. The main questions/suggestions now are the following:
HamEvo can be modified to accept TDGenerator objects as generator and then in the backend it can be checked whether pyq or Schrodinger equation solver must handle the simulation. In this way HamEvo act as a placeholder that potentially can store time-dependent blocks.
Do we allow TDGenerator objects to be part of the circuit on their own, without being encapsulated in HamEvo?
Do we create a separate backend for Schrodinger equation solvers or integrate them into pyq?
What is the place of TDGenerator in the hierarchy of blocks, e.g., should it inherit from AbstractBlock or be completely standalone?
Initial proposal of time-dependent generator block.
Code to test some capabilities of current implementation:
As it can be seen from this code snippet, the
TDGenerator
object can be called with a time argument that results in a tensor representing the corresponding generator at some timet
. Now it is easy to pass thisTDGenerator
object todynamiqs
orkrylov
solvers to actually get the time evolution of the system. The main questions/suggestions now are the following:HamEvo
can be modified to acceptTDGenerator
objects as generator and then in the backend it can be checked whetherpyq
or Schrodinger equation solver must handle the simulation. In this wayHamEvo
act as a placeholder that potentially can store time-dependent blocks.HamEvo
?pyq
?TDGenerator
in the hierarchy of blocks, e.g., should it inherit fromAbstractBlock
or be completely standalone?