Menu

#155 Allow transformations between different representations

0.3.5
done
nobody
None
nobody
2022-12-25
2019-04-25
Ulf Lorenz
No

Note that the basic interface has already been added as part of [#144], where the DVR / FBR transformations have been implemented as (special) transformations.

What and Why

Currently, you set up a couple of one-dimensional grids and combine them to a multidimensional grid (which we call a Representation).

However, there are some use-cases where we want to have not one representation, but multiple. In most cases, we have a "base representation" where we set up everything and "derived representations" that have particular uses. We can then transform the state and operators between the different representations.

Examples:

  • Sometimes we want to do the calculation in some "base representation", but some setup is more conveniently done in a particular basis. For example, for open quantum systems, the operators used for relaxation/dephasing are usually defined in an energy representation. Or we want to construct an initial wave function or density operator that has a simple form, but only in a specific basis.
  • When we have multiple electronic states, propagation is usually easier in the diabatic representation, while the visualization would work better in the adiabatic representation. This is a special case where the grid is identical in both representations.
  • When we have multiple electronic states, we may wish to propagate the wave function simultaneously on all electronic states, but calculate expectation values /plot the wave function only on one of the electronic states. Then the base represenation is the one with all electronic states, the derived only for one of the electronic states.
  • Partial tracing could be implemented in this way. The base representation contains all degrees of freedom, while the derived representation has one or more degrees of freedom removed. Might be useful for testing open system approaches against an "exact" solution.

The idea would be to add a framework where you can easily create derived representations and transformations from a base representation. The transformations would then be responsible to transform states from the base to the derived representation (and possibly back). This might be useful for various problems, for example handling the electronic states easily, or setting up open quantum systems.

Acceptance criteria
  • There is some documentation about this feature on a sufficiently high level
  • The transformation into a specific basis has been implemented
    • You can easily set up the target representation; maybe the transformation does this already
    • The transformation can be used to specify a density operator in a basis (add a demo)
  • The Python interface is adapted to the new functionality
    • implement the Lindblad acceptance test (requires a basis transformation)
  • new issues for the additional functionality use cases have been specified or adapted.

Implemented a SubspaceTransformation to move states into the subspace of energy eigenstates. Also added the ability to transform /move operators. With that, I could also finally implement the demo MolVibration/OH/3. Further transformations are moved to [#231], [#232].

Going to the dual space seems like a bad idea: Operators become wavefunctions (????). I did not even create an issue for that.

Related

Tickets: #111
Tickets: #144
Tickets: #151
Tickets: #158
Tickets: #178
Tickets: #231
Tickets: #232
Tickets: #70

Discussion

  • Ulf Lorenz

    Ulf Lorenz - 2019-05-29
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -5,6 +5,7 @@
     However, there are some use-cases where we want to have not one representation, but multiple. In most cases, we have a "base representation" where we set up everything and "derived representations" that have particular uses. We can then transform the state and operators between the different representations.
    
     Examples:
    +
     * Sometimes we want to do the calculation in some "base representation", but some setup is more conveniently done in a particular basis. For example, for open quantum systems, the operators used for relaxation/dephasing are usually defined in an energy representation. Or we want to construct an initial wave function or density operator that has a simple form, but only in a specific basis.
     * When we have multiple electronic states, propagation is usually easier in the diabatic representation, while the visualization would work better in the adiabatic representation. This is a special case where the grid is identical in both representations.
     * When we have multiple electronic states, we may wish to propagate the wave function simultaneously on all electronic states, but calculate expectation values /plot the wave function only on one of the electronic states. Then the base represenation is the one with all electronic states, the derived only for one of the electronic states.
    
     
  • Ulf Lorenz

    Ulf Lorenz - 2019-05-29
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -18,5 +18,5 @@
     * There is some documentation about this feature on a sufficiently high level
     * The transformation into a specific basis has been implemented
         * The transformation is used in the Lindblad demo setup MolVibration/OH/3
    -    * The transformation replaces the generation of complex initial density operators (StateBuilder::transformDensityFromBasis)
    +    * The transformation can be used to specify a density operator in a basis (add a demo)
     * new issues for the additional functionality use cases have been specified or adapted.
    
     
  • Ulf Lorenz

    Ulf Lorenz - 2019-08-15
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -19,4 +19,6 @@
     * The transformation into a specific basis has been implemented
         * The transformation is used in the Lindblad demo setup MolVibration/OH/3
         * The transformation can be used to specify a density operator in a basis (add a demo)
    +* The Python interface is adapted to the new functionality
    +    * implement the Lindblad acceptance test (requires a basis transformation)
     * new issues for the additional functionality use cases have been specified or adapted.
    
     
  • Ulf Lorenz

    Ulf Lorenz - 2019-12-31
    • Milestone: Backlog --> 0.4 goal
     
  • Ulf Lorenz

    Ulf Lorenz - 2020-05-21
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,3 +1,5 @@
    +Note that the basic interface has already been added as part of [#144], where the DVR / FBR transformations have been implemented as (special) transformations.
    +
     #####What and Why#####
    
     Currently, you set up a couple of one-dimensional grids and combine them to a multidimensional grid (which we call a Representation).
    
     

    Related

    Tickets: #144

  • Ulf Lorenz

    Ulf Lorenz - 2022-11-18
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -19,7 +19,7 @@
    
     * There is some documentation about this feature on a sufficiently high level
     * The transformation into a specific basis has been implemented
    -    * The transformation is used in the Lindblad demo setup MolVibration/OH/3
    +    * You can easily set up the target representation; maybe the transformation does this already
         * The transformation can be used to specify a density operator in a basis (add a demo)
     * The Python interface is adapted to the new functionality
         * implement the Lindblad acceptance test (requires a basis transformation)
    
     
  • Ulf Lorenz

    Ulf Lorenz - 2022-11-18
    • status: open --> assigned
    • assigned_to: Ulf Lorenz
    • Milestone: 0.4 goal --> 0.3.5
     
  • Ulf Lorenz

    Ulf Lorenz - 2022-12-25
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -24,3 +24,9 @@
     * The Python interface is adapted to the new functionality
         * implement the Lindblad acceptance test (requires a basis transformation)
     * new issues for the additional functionality use cases have been specified or adapted.
    +
    +----
    +
    +Implemented a SubspaceTransformation to move states into the subspace of energy eigenstates. Also added the ability to transform /move operators. With that, I could also finally implement the demo MolVibration/OH/3. Further transformations are moved to [#231], [#232].
    +
    +Going to the dual space seems like a bad idea: Operators become wavefunctions (????). I did not even create an issue for that.
    
    • status: assigned --> done
    • assigned_to: Ulf Lorenz --> nobody
     

    Related

    Tickets: #231
    Tickets: #232


Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.