Sunday, 20 January 2013

Schrödinger Lab 2.30 and Screenshots.

Here are the notes on the next update to Schrödinger Lab, which has just been submitted to the App Store for review:


Another sizable update!

Please support future updates by rating this App in the App Store.

Finally, users can easily define square potentials, such as the 1D or 2D finite square well, with the inclusion of a 'rect' function.

No more setting the max # of basis functions in the 'New Palette' window.  Schrödinger Lab will now allocate the memory for you.

The resolution can now be altered by changing the number of gridpoints.  Use a low number to make it run faster or use higher values for more accuracy.
The cell width in momentum space can now be set by the user.

New logo!  

Improved 3D graphics with better lighting.

The potential text boxes are now situated on top of the main view for easier access and visibility.

The simulation time, pause/play and restart buttons are now situated above the scroll-view, again for easier access.

The 2D Palettes will now plot the quadratic surface when making alterations to either kxspring or kyspring.

If all windows are closed, clicking the Schrödinger Lab icon in the dock will cause the New Palette window to reopen on screen.

 And here are the screenshots:












Comments:

Some definite usability improvements here, but as always, I welcome suggestions on how to further improve the interface- or any aspect of the code.

It's a busy user interface, but that's largely by necessity.  There's a lot to pack in.  Even so- I'm constantly striving to make the code easier and more intuitive to use.  

I'm not entirely sure what to do next.  There are a few remaining quirks I'd like to rectify, but I'm unsure what the next feature should be.  

I'd like to add some way for users to add and supply their own documentation to the palettes.  I'm also considering playing around with spherical harmonics- though this could take a while.  Let me know if you have any suggestions.  You can reach me at christianjbdev@gmail.com

Edit,  24 Jan:   I found a problem with how the transparency is calculated in momentum space, so yesterday I resubmitted the corrected app to the store.  I've also updated the screenshots on this page.


Wednesday, 9 January 2013

Schrödinger Lab 2.20 release notes and screen shots


Schrödinger Lab 2.20 has been submitted to the Mac App Store.  If all goes well, it should be approved in approx 9 days time. 



First things first, here's the new icon!  The Schrödinger Labrador is now modeled by 'Tegan'.


I've made numerous tweaks to the interface, so here are some screenshots from the new-look palettes. 



The above screenshot shows off the new 2D 'Angular x Radial' basis functions, which are eigenfunctions of the 2D isotropic harmonic oscillator which are separable in polar coordinates.




The 2D Quantum double Well




An attempt at a double slit simulation.  I admit, this example could be improved.  I need to play around with this a little more.



The Morse Oscillator.



The finite square well in periodic boundary conditions.


Here are the release notes:

Big update!

Schrödinger Lab can now switch between displaying eigenfunctions or basis-functions. It's now possible to show how the wavefunction is decomposed in terms of the basis-functions and to display each basis-function.

In the 2D palettes, Schrödinger Lab can now use basis-functions Χ_m,n(r,theta)=R_m,n(r)T_m(theta) which are separable in polar coordinates, where R_m,n(r) are constructed from Laguerre polynomials and T_m(theta)=e^(I'm theta) with theta=atan2(y,x) is the angular function.

Many improvements to the interface, including:

i) Mouse rotations in the 2D palettes now work better, and the rotation is now always performed about the axis origin.

ii) More elegant window-resizing behavior.

iii) Introducing 'Tegan', our new model for the Schrödinger Labrador, who also features in the new icon.

Eigenfunction color palettes used to indicate phase now have uniform brightness.

Fixed a bug where the number of basis-functions in the 1D palettes was capped at 64. 

Saturday, 22 December 2012

Schrödinger Lab 2.11 and beyond.

I've submitted the next update to Schrödinger Lab on the Apple App Store.   It fixes a nasty problem in which the code fails to run at all for people using OSX 10.7.  I traced the problem to a single field in Xcode (the Apple development environment), in which I had unfortunately set the deployment target of a code-library to 10.8, thus meaning it wouldn't compile on 10.7.

I of course apologize to all those affected, but mistakes do happen and it's not easy to check that the code I'm writing runs on OS versions other than the one I'm using.

After the next update, Schrödinger Lab should also run on OS 10.6.

Finally- the code now uses much less memory for the 2D palette calculations.



I'm now busy working on Schrödinger Lab 2.2 and I've got some cool stuff in the works.  The planned 2.2 update will allow the user to easily switch between displaying eigenfunctions or basis-functions.  Thus, at long last, users will be able to actually view the basis functions the code uses internally.

One of the main reasons I'm implementing this is because I've now implemented a set of 2D basis functions which are separable in the polar coordinates r=sqrt(x*x+y*y) and theta=atan2(x,y), which are given by (for mass=hbar=omega0=1)

Phi_mn(r,theta) = A exp[i m theta] L^n_m(r^2) exp(-r^2) r^m

where L^n_m are generalized Laguerre polynomials.

Some readers will recognize that this separable basis is essentially the 2D equivalent of the well known spherical harmonics solutions used in 3D problems with spherical symmetry.

Anyway- they're very pretty and by allowing users to view the basis functions directly, the code can be used to visualize these functions and to form different linear combinations.

Pictures soon!



Saturday, 15 December 2012

Schrödinger Lab 2.1

Here are some screenshots from the next update, which I expect to arrive about the 10th of January.












And here are the update notes:


Added solution of Schrödinger's eqn. for 2D time-dependent potentials. 

Improvements to documentation and further formatting improvements to help-text. 

The 1D palettes now color the magnitude squared eigenfunctions by their phase. 

The color scheme is now more consistent between the 1D and 2D palettes. 

2D palettes now show angular momentum values for wave-function and eigenfunctions. 

The 'commit' button in the 2D palettes now commits all changes across all boxes in the scroll bar. 

The palette titles are now set to the title of the file or the name of the example menu item. 

r (=sqrtf(x*x+y*y) is now a valid symbol in the 2D palette potential text-box. 

Various interface improvements, including improvements to the new palette menu. 

Fixed a bug in the 2D palette affecting some calculations in the infinite square well basis, especially the 2D double slit example.




Tuesday, 27 November 2012

App submitted to App Store.

A quick blog post today.

The update to Schrödinger Lab has now been submitted to the App Store.  If all goes well, I expect it to take ~3 weeks until it goes live.

Of course, there's a chance it could be rejected for a technical reason, in which case it will need to be resubmitted with corrections.

(The application process is time-consuming and sometimes annoying, but ultimately it does help Apple maintain the standard of Apps for sale- which is something that benefits consumers. )

Well, I'm off to relax for a bit.

Edit: (Dec 2nd)  I found a small error in the code, so I just now resubmitted to the App Store.  Unfortunately, this means I have to go back to the end of the queue, but at least I got to squeeze in a few extra improvements before resubmitting.

Edit II: (Dec 12th)  The new version of the App has just been approved!  I've been working hard in the interim and I'm actually going to submit the next version of Schrödinger Lab in the next few hours.  I'll blog about the even newer update over the next day or two.  It contains a few nice improvements and I'm quite proud of it.

Looking further ahead- I've even started working on the update after that!  My new mission is to allow users of Schrödinger Lab to explore angular momentum states.  Let's see how it works out.



Monday, 26 November 2012

Code is completed! Now to submit to App Store.


The good news is that the 2D update to Schrödinger Lab is completed.  All that's left to do is to submit to the Apple App Store and await approval.  This could take a few weeks, so please be patient, but I will try my best to get it out in time for Christmas!



As a taster, below is a screenshot from the finalized code showing a wave impacting a double-slit.




Wednesday, 7 November 2012

On the downhill stretch!

I successfully merged the 1D and 2D codes into what will be the next release of Schrödinger Lab.  Since I last wrote, I've also taken the opportunity to rewrite the graphing in the 1D code to take advantage of my improved knowledge of OpenGL, the graphics programming language I've been using.  The changes to the end-user are minimal, but I've managed to make the code a lot cleaner, which should help accelerate future updates.  

I also tidied up the interface a little bit and got rid of some tiny but occasionally annoying misalignments in the paneling.  

Finally, I rewrote my text-parsing code to make it easier for me to use subscripts/superscripts/italics and other font effects in my help boxes.  


OK, so here's what the latest version looks like:


I now have a palette system in place where the user can make multiple palettes for solving either or both of the 1D and 2D Schrödinger eqn.  This will make it easier for the users to compare results with different parameters and also to compare between the 1D and 2D results.


The Future

The two big tasks I have remaining are i) to finish writing the help documentation for the 2D calculations and ii) to implement saving and loading of palettes for the new combined code.  I hope to have this finished in a month or so and then it will take a further month to get the code submitted and accepted by the Apple Store.  So, altogether I estimate it's going to take about two months before the update is shipped.

Pricing will remain the same- i.e. the cheapest I can physically sell it without giving it away.  I briefly considered setting the price equal to

number of dimensions the code can solve SE in x $1,

but ultimately I decided that I prefer to maximize the number of copies sold as opposed to the amount of money made.

The More Distant Future

I plan to continue adding functionality to Schrödinger Lab.  Some of the features will be obvious, but I ultimately will need to look for ideas about where I can take this code next.  So, if any of you want a particular feature implemented then let me know!  I'm also interested in constructive criticism of what I've already done.  In general, any feedback will be appreciated.