[go: up one dir, main page]

Menu

#183 Develop a categorization for operators

0.3.3
done
nobody
None
nobody
2021-06-21
2020-01-02
Ulf Lorenz
No
What and Why

As a prerequisite for operator functions (see [#65]), in particular regarding the split operator, which requires exponentation of operators (see [#112]), we first need to develop a categorization scheme for operators.

That is, if you look at the operators that we typically use, we immediately find a couple of recurring themes: There are FBR operators (dvr2fbr transformation, multiplication at each grid point, back-transformation), DVR operators (multiplication at each grid point), multiplication operators, i.e. (time-dependent) complex numbers, operators that couple channels (?) and so on.

What we need to do in this issue is to develop a criterion where most of these operators fit in, especially with regard to special cases, such as dipole couplings. Preferably, we would use some interface classes for this purpose to denote the various operator types.

Acceptance criteria
  • Develop operator categories that covers the typical use-cases.
    • potential complications: one-dimensional vs. multidimensional potentials / FBR operators
    • potential complication / efficiency issue: real-valued vs. complex-valued data
    • potential complication: arbitrary operators vs. close-coupling operators (which have few entries)
  • create the base classes for each operator category and assign them appropriate member functions / properties
  • derive all operator classes from these base classes
  • Make sure the Python interface reflects the changes
  • Document the whole issue well.

I only redid the various base classes with real and complex fundamental data types each. I did not create any "trait" classes, here it would make sense to do this closer to the actual issue at hand (checking for commutability, for example). Base classes created

  • 1D potentials, both for real and complex potentials
  • ND potentials, both for real and complex potentials
  • kept the TransformationOperator1D
  • Constant, both for real and complex constants

Related

Tickets: #112
Tickets: #143
Tickets: #65

Discussion

  • Ulf Lorenz

    Ulf Lorenz - 2020-07-25
    • Milestone: 0.3.1 --> 0.4 goal
     
  • Ulf Lorenz

    Ulf Lorenz - 2021-01-30
    • Milestone: 0.4 goal --> 0.3.3
     
  • Ulf Lorenz

    Ulf Lorenz - 2021-05-30
    • status: open --> assigned
    • assigned_to: Ulf Lorenz
     
  • Ulf Lorenz

    Ulf Lorenz - 2021-06-21
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -17,3 +17,12 @@
     * derive all operator classes from these base classes
     * Make sure the Python interface reflects the changes
     * Document the whole issue well.
    +
    +----
    +
    +I only redid the various base classes with real and complex fundamental data types each. I did not create any "trait" classes, here it would make sense to do this closer to the actual issue at hand (checking for commutability, for example). Base classes created
    +
    +* 1D potentials, both for real and complex potentials
    +* ND potentials, both for real and complex potentials
    +* kept the TransformationOperator1D
    +* Constant, both for real and complex constants
    
     
  • Ulf Lorenz

    Ulf Lorenz - 2021-06-21
    • status: assigned --> done
    • assigned_to: Ulf Lorenz --> nobody
     

Log in to post a comment.