GSoC 2012 Application Alexandr Popov: Quantum Mechanics (Abstract Dirac Notation Analytical Sol. ) - sympy/sympy GitHub Wiki

Name : Alexandr Popov

University: National Technical University of Ukraine “Kyiv Polytechnic Institute”; applied physics department in Physical-Technical Institute

Short bio: I am a 5th year student of applied physics department, and quantum mechanics is certainly a part of my education, as well as scientific work (bachelor and master projects carrying out in the Institute of Physics NASU). As physics, and quantum mechanics (QM) in particular, are the things I'm really interested in, I would like to implement some ideas into SymPy. As a part of my study and scientific work, I used extensively C/C++ and Python languages. SymPy is a convenient and useful tool so improving it will be a remarkable experience.

Email: [email protected]

GitHub username: alxspopov

blogspot account: alxspopov.blogspot.com

Coding Skills:

Platform: Scientific Linux 6.2 (carbon) // Python 3(2)

I'm using C/C++ and Python for about 2 years in my scientific projects and study. I've written simple interface improvements for Wien2k package (parsing formated files, calculating equilibrium volume of crystal, etc.) as a part o my bachelor project. Now I'm working on optical wave propagation problem (numerical solution of parabolic equation) and laser beam analysis/profiling (image processing).

My project

The project concerns Symbolic quantum mechanics (sympy.physics.quantum), particularly Implementing Analytical Solutions, and Abstract Dirac Notation (in terms of perturbation theory, variational Ritz method and quantum tunneling effect). Implementing my project will give me the experience in open source coding and the improvement of my knowledge in quantum mechanics and python; improving of SymPy lib. I have chosen this project from Ideas page because I'm really confident in my solid knowledge of QM and this is the field I'm interested in. The specific ideas of Implementing Analytical Solutions and Abstract Dirac Notation were chosen because the implementation of the first one will be the basis of further improvement of sympy.physics.quantum module, as using and testing of known analytical solutions and physical systems in subsequent QM modules is relevant. Besides, optimization of already implemented wavefunctions (in sympy.physics.hydrogen and sympy.physics.quantum.piab), as well as finishing the implementation of basic position/momentum bases in SymPy is needed. The next step will be the integration of all known analytical solutions into sympy, as well as systems whose energies can be obtained with a simple numerical procedure, and whose solution is given as a series e.g. The other part of the project (and the following step), perturbation theory and variational Ritz method, can provide relevant improvement into the quantum sympy module, as they are useful and powerful instruments with wide range of applications.

For this proposal two particular parts of ideas from the Ideas page were taken. But they are interconnected and can be a part of one project. Perturbation and scattering theory (as well as tunneling effect) are not really Abstract Dirac Notation implementation. However, ADN will be used there for writing simplicity. They are just the features (methods) of quantum mechanics really important to realize. And they are connected with analytical solutions (for example, when it comes to using and testing them, knowledge about analytical solutions is needed). So, the base of the project is Applying of analytical solutions, with further implementation of perturbation theory etc.

My qualifications to cope with this project: I have already taken upper division quantum mechanics and nuclear physics courses. QM is also a part of my scientific work (nonlinear optics, solid state physics). In my programs I've often used NumPy, SciPy, SymPy libraries for calculation, and Matplotlib/Mayavi for visualization results. These skills can help me to deal and have a success in this project.

My time investment plan into the project: 30h/week before GSoC to provide feedback with mentoring organisation (if needed further details of my proposal) and reading documentation, getting up to speed to begin working on the projects etc.; full time 40h/week during GSoC; relevant portions of time to provide further improvement of ideas and correlating projects after GSoC.

Preliminary plan (will be adjusted after discussion):

The revised timeline with account of remarks and corrections.

Week 1-2 of coding part of GSoC: Optimization and refactoring of wavefunctions, already implemented in sympy.physics.hydrogen and sympy.physics.quantum.piab, as well as finishing the implementation of basic position/momentum bases.

Week 3-4: Implementation of all analytical QM solutions into SymPy (as submodule in the quantum). The solutions can be not only the ones mentioned in the Ideas page, but also the solutions and energy states provided with special potentials (for example, Morze potential) leading to Hyper-geometric functions e.g., or with the usage of quasiclassical approximation.

Week 5-6: Testing, optimization and finalizing of current issues, implemented during weeks 1-4. Finalizing to provide successful perturbation theory background. Above this, if the time left, the realization of solutions for unsymmetrical quantum wells, using of quasiclassical approximation and quantum tunneling effect (calculation of tunneling coefficient) should be done.

Week 7-8: Realization of perturbation theory (dealing with both generate and nongenerate unperturbed states of the system) and variational Ritz method. Besides, some important examples of their usage can be added (coupled oscillators e.g.).

Week 9-10: If thing go well, the basics of elastic scattering theory can be implemented here. Otherwise, finishing of perturbation theory etc. will be done.

Week 11-12: “Pencils down” date, scrubbing code, writing tests, improving documentation, etc.

The pulls to the project can be done every week (or periods mentioned above).Name : Alexandr Popov

PATCH requirement

Addition to sympy.physics.gaussopt module Pull request: link

Reported success on the SymPy mail-list : link

( Added the beam_plot and beam_plot2 utilities (one of TODO tasks) for plotting gaussian beam propagation (waist parameter). They are helpful in understanding of beam parameters and its behaviour in space.The first utility uses pyglet, the second uses matplotlib. )

The patch was revised.

The discussion on "gaussopt module patch" is opened in new pull request link

Implemented new class ThinPrism which describes single angle thin prism that can be used for deviation of geometrical and gaussian (not impl.) beam propagation.

Also new ray transfer matrix formalism was implemented, in which all ray transfer matrices are unimodular (see link listed below for detailed description)

To give some background for description of diffraction of Gaussian beams, working on Fresnel integrals started.

Link to Fresnel pull request: link

Fresnel sine and cosine integrals were added (FresnelS and FresnelC). The asymptotic evaluation, generalised expansion, numerical evaluation and error function representation was implemented for these classes.

Both with Fresnel cosine integral C(x), Fresnel integrals used in optics, arise in the description of near field Fresnel diffraction phenomena. Parametric plot of S(t) against C(t) forms Euler (Cornu) spiral.

New pull request opened on physics/paulialgebra fix

Link to pull request: link

Added eval_sigma function to evaluate the product of Pauli matrices and other symbols.

Added documentation and examples on using round brackets when calculating product of Pauli matrices and symbols (or numbers), or evaluating the obtained expression in terms of sigma matrices.

As merging of gaussopt module patch is delayed due to implementing both unimodular and non-unimodular ray tranfer matrices formalisms side-by-side, this new patch was realized to satisfy GSoC requirements.

First steps ideas added

To start with current solutions implementation, I'd prefer to improve:

  1. Documentation. Some portion of information should be added to hydrogen atom, particle in a box and harmonic oscillator etc. to provide clear understanding of some functions.

  2. First of all, the major purpose for me of implementing and improving analytic solutions is their usage in perturbation theory, as non-perturbed wavefunctions and energy states are needed. I started to get acquainted with current implementation and code recently. At this point I have some ideas:

i) Free particle wave function, particle in 2D/3D boxes.

ii) Hooke's (Helium like) atom

iii) As for another example for functionality needed, the matrix elements of harmonic oscillator coordinate should provide the possibility to use and test the perturbation theory with this physical system. E.g., 1D harmonic oscillator in weak electric field has addition to its normal potential V(x)~-E*x, therefore we need matrix elements for x coordinate.