Revive continuous representations and analytical solutions to QM systems - sympy/sympy GitHub Wiki

Stas Kelvich

PhD Student in MEPhI, Moscow, Russia. Working on theoretical accounting of coulomb corrections in the theory of intense laser-matter interaction.

[email protected]

github.com/kelvich

skype: stas.kelvich

Programmer skills:

As a desktop environment i'm using MacOS and Sublime Text, for server environment I prefer FreeBSD (if possible) or Debian. I'm familiar with git and github.

For a long time i've coded for web. Most of the projects i'have developed with Ruby on Rails or plain Ruby on the server side and with Backbone.js on the client side. I particapated in development of few rubygems: errbit — web based error notification system and russian — I18n localization and pluralization library for russian language.

I took part in GSoC'13 at PostgreSQL mentoring organisation. I changed storage scheme for multidimensional indices and now they reduced in size for 3-4 times. This code can be found in postgres trunk (9.4-dev). I'm using python mostly for numerical calculation in couple with numpy. I wrote software for culculation of quantum scattering process and multiphoton ionization.

I have been using Mathematica a lot lately for symbolic calculations of ionization process.

Patches:

(in review)

https://github.com/sympy/sympy/pull/7307

Fixes noncommutativity of Quantum Operator is not respected by separatevars, combsimp, factor.

I've joined SymPy project near the proposals deadline, so i want also fix other issues related to commutativity to have more accepted patches.

Motivation:

My current work connected with theory of strong laser and matter interaction. Strong Field Approximation — popular analytical framework allows us to calculate observables with minimal usage of numerical calculations (in a simplest case we should numerrically find saddle points of action function and all other stuff can be calculated analytically). So i want be aable to code that processes in python. As far as in this theory we calculate transitions between bound atomic state and free state in periodic wave then we should deal with states of continous spectra. Large amount of work was done by Tomo Lazovich to incorporate that representations in different coordinate systems in SymPy but it still unmerged with master. I want to change this code to a working state, cover with tests and use sympy as my everyday coding platform, instead of Mathematica.

Current state:

There is open PR573 with big discussion in it. According to Tomo blog [1] such things possible: Here is an example python session with notes on the output:

Here is an example python session with notes on the output:
>>> from sympy.physics.quantum import *
>>> from sympy.physics.quantum.piab import *
>>> wf = represent(PIABKet())
>>> wf
Wavefunction(2**(1/2)*(1/L)**(1/2)*sin(pi*n*x_1/L), (x_1, 0, L))
>>> wf.norm
1
We get a particle-in-the-box Wavefunction when it is represented and it’s properly normalized.
>>> represent(XOp()*PIABKet())
Wavefunction(2**(1/2)*x_2*(1/L)**(1/2)*sin(pi*n*x_2/L), x_2)
We now get a wavefunction with an extra factor of x!
>>> represent(PxOp()*PIABKet(), basis=XKet)
Wavefunction(-2**(1/2)*hbar*I*pi*n*(1/L)**(1/2)*cos(pi*n*x_2/L)/L, x_2)
The PxOp actually takes the derivative of the wavefunction correctly! (Momentum operators in the position basis are differential operators).
>>> represent(PIABBra()*XOp()*PIABKet(), basis=XKet)
0

Project plan:

This project depends on lots of code that is not maintained now, so this plan is very approximate.

Before start:

Resolve issues about noncommutative behavior of some functions. Study code and internal API in https://github.com/sympy/sympy/pull/573

Week 1-2

Rebase and revive Tomo Lazovich's code. That issue and discussion lasts about three years, so it may be tricky part. In that period i want to launch and commit minimal working subset of Tomo's code, without creating any new or planned features nor fixing some issues that i can observe. Only actualize parts and test that finally working and to have minimal working ready-to-merge code.

Week 3-4

Discuss with community internal API of representation code, actualize it, finish related features from original Tomo proposal.

Week 5-6

Code analytically solvable 1D systems, starting from harmonic oscillator, zero range potential, finite well. Check ability to factorize hamiltonian and obtain solutions with ladder operators in case of oscillator. Create evolution operator through decomposition of initial state with respect to states with definite energy.

Week 7-8

3D quantum systems. Most important - hydrogen atom in cartesian and parabollic coordinates. Hydrogen wf in parabollic coordinates gives ability to analitycal calculation of some problems in constant electric field, i.e. Stark effect. Also with this we can calculate ionization probability as amplitude of transition between bound state and free state in periodic wave (Volkov state).

[1] http://lazovichsympy.wordpress.com/2011/08/13/cool-results-in-represent/