Ongoing ALPS projects
I am currently interested in two major code developments that should play a key role in further extending the applicability of the ALPS codes across a wide field of applications.
Efficient graph handling
Graphs as a basic concept are underlying a number of ALPS libraries, such as the lattice and model libraries. Today all graphs in ALPS are based on the boost graph library. While incredibly versatile, this library misses efficient implementations of some essential graph algorithms, such as identifying graph isomorphisms and graph embeddings. Both concepts are strongly needed in ALPS, e.g. to further improve "symmetry-improved" exact diagonalization codes, to enable basic routines for strong-coupling expansions, and to extend the ALPS model library to include multi-site interaction terms. Together with Lukas Gamper efficient C++ implementations of these codes are currently implemented, and we should have these libraries available in spring of 2007.
ALPS 2.0: The scheduler library
The ALPS project certainly owes much of its current appreciation to its extensive scheduler library. One of the key features of this library is to provide a framework that enables one to easily distribute an "embarrassingly parallel" code (such as Monte Carlo simulations) over a distributed memory machine with various tasks automatically assigned to the multiple cpus. For the next major release of the ALPS project, ALPS 2.0, I envision that this scheduler library should become even smarter, and not only distribute tasks for a given parameter set, but to adaptively modify the parameter set to single out the physically relevant parameter regimes. One way of achieving this goal has been demonstrated in a line of research on statistical ensemble optimization which should find its way into the new scheduler library as an adaptive extended ensemble simulation scheduler framework and a feedback-optimized parallel tempering/replica exchange scheduler framework.
Past ALPS projects
I have been working on several code implementations since we launched the ALPS project in January 2003. After the initial launch I was also somewhat involved in widely publicizing our new open-source project giving invited talks at the 2004 APS March Meeting in Montreal and the 2005 Spring Meeting of the German Physical Society in Berlin.
The worm code
During the first years of the ALPS project I devoted most of my coding efforts to implement one of the three ALPS quantum Monte Carlo codes, the so-called algorithm. Today this code allows to efficiently simulate quantum lattice models with large diagonal matrix elements (as compared to the off-diagonal elements), especially when dealing with non-local diagonal terms such as site-site interactions. A general introduction to the basic concepts of this algorithm can be found in this on the worm code.
XML data handling
A short excursion into functional programming resulted in some XML/XSLT library routines that grew into an XML/XSLT toolbox to conveniently extract data from the ALPS output files (which all come in XML format). However, it quickly turned out that these tools were not particularly efficient in dealing with large data files. In summer 2005 I had the pleasure to work with [/wiki/index.php?title=User:Gamperl$amp;action=edit Lukas Gamper] on designing a much more efficient data extraction toolbox, the archive tool, which is based on an SQL database. In fact, Lukas implemented the whole toolbox so all the credit should actually go to him...
The ALPS Wiki
At some point in the summer of 2005 I realized that the growing community of ALPS developers and users not only became increasingly delocalized, but it also became more and more cumbersome to motivate individual developers to contribute to the documentation of their progress on the ALPS webpages. Clearly, a more convenient tool to quickly add and revise web documents was asked for, which finally resulted in the launch of these Wiki pages in April 2006.
To learn more about my research, recent publications and contact address you may want to check my homepage.