Crystals and Patterns

Wherein I will post information and musings related to my programs Systre and 3dt, collectively known as The Gravrog Project, their uses and the research that went into it.

More new beginnings and a bit of history

It has been three years since I last posted here, and I have to admit I had all but forgotten about this blog until I received an email when someone commented on an old post. I have not been idle during this time, though. As of November 2014, I am working on the next incarnation of the Gavrog software, which will be written in JavaScript and able to run directly in a web browser.

All things considered, this will be the third reimplementation in as many decades. The earliest predecessor of what has become 3dt was written in GAP – a computer algebra system specialising in group theory and abstract algebra – in the second half of the 1990s and produced graphical output by piping geometry data into Geomview, a 3D viewing program popular at the time. This worked reasonably well, but it was somewhat clunky due to the need for two separate programs as well as the limitations of the GAP language, which, although excellent in many respects, had never been meant to be a general purpose programming language.

Soon after discovering Python, I started to reimplement my methods for dealing with Delaney-Dress symbols, along with the group theoretic algorithms from GAP I needed, around the year 2000. Python finally allowed me to incorporate a graphical user interface and access OpenGL graphics all within the same program. The result, which I decided to name 3dt in reference to Daniel Huson’s program 2dTiler, was soon accompanied by the original Systre. These two programs had a handful of users, but as it turned out, getting particularly the Python version 3dt to work properly on a new computer was not a trivial task. This is why I eventually decided to do another reimplementation.

Between 2002 and 2004, while working with Daniel Huson in his Bioinformatics algorithm group in Tübingen, I participated in the development of a relatively large Java library and eventually realised that using Java as the new implementation language would allow me to produce programs that could more easily be deployed to users and work equally well on Linux, OS X and Windows. Under the new collective name Gavrog, Version 1.0.0 of Systre’s Java incarnation was finally released in August 2006, whereas the first public release of the new 3dt, Version 0.3.0, did not happen until December 2007.

I think it is safe to say that, at least in the case of the Gavrog software, the Java slogan “write once, run everywhere” held true for many years. With very few exceptions, the programs ran very smoothly across operating systems and Java versions. Due to the complexity of the software, however, my relative inexperience in writing and maintaining such a large system, and the limitation of Java as a language itself, it became increasingly difficult to make modifications, implement new features, and keep up with changes in the platform such as the transition from 32- to 64-bit systems. While none of these issues would have justified a complete reimplementation, it became clear to me that one way or another, a significant overhaul was in order.

Since moving to Australia in 2007, I have developed various web applications for the Australian National University, which kept me well aware of the growing power and versatility of the web platform. I am now convinced that the time has come to move the Gavrog software off the desktop and into the browser. In November 2014, I started the new JavaScript implementation, which has been progressing very nicely despite the fact that his time, unlike in the case of the Python and Java versions, which were both largely written during my time working with Michael O’Keeffe at Arizona State University, I do not currently have full-time funding for this kind of endeavour.

There is no specific timeline or roadmap yet for the new project. The first big milestone will of course be to reproduce the existing functionality in Systre and 3dt, while fixing a number of smaller and larger architectural problems that have made certain kinds of additional functionality difficult to implement. Going forward, I would like to integrate the Gavrog programs closer with existing online databases such as RCSR and Epinet, and give them their own database of 3D tilings and other structures not already covered there. A further goal is to provide better error messages and extend 3dt to display a wide range of structure types such as point clouds, nets and partial nets, and partial tilings.

A first, very simple demo can be found at Note that this starts with a Delaney-Dress symbol and performs most of the operations 3dt would on the fly directly in the browser. The displayed scene can be rotated, panned and zoomed with the mouse.

I will make further posts as the webGavrog project develops.

Gavrog 0.6.0 beta 2 has been released

Hello again!

This is just a quick announcement of the release of a second beta test version for Gavrog version 0.6.0, which includes 3dt 0.6.0 and Systre 1.2.0. The new release fixes a small number of bugs, mostly related to saving data to files. You can look at the detailed list or download the new release at

A New Beginning

Hello and welcome to my new blog!

The mathematics and aesthetics of crystals and patterns have been my passion and often my profession for at least a quarter century now. Over the years, I have written a lot of software to investigate and display periodic tilings and nets and related structures, but it was not always easy to share this software with others. So about 10 years ago, I decided to take everything I had learned and programmed and distil it into a Java library which I called Gavrog. The programs Systre and 3dt, which had existed before in other forms, were rebuild as part of the new project. Through the use of Java, it was much easier for me to get the programs to the people who wanted to use them.

Alas, it has not always been easy to find time for maintaining and improving the software, let alone do new research. As of 2007, the Gavrog project had to be demoted from full-time profession to hobby, and for some years, I was too occupied with other endeavours  to pay much attention to it. This is why there had been no new official release of the software since November 2008. Now this has changed and, at least for the time being, I am again able to devote a reasonable amount of time each week to this work. Earlier this week, I have released new versions of Systre (1.2.0) and 3dt (0.6.0) at

Information about the programs has mostly been trickling through to potential users by word of mouth, and through the efforts of a handful of colleagues and friends who have promoted my software in conferences and schools all over the globe. In the coming months and years, I would like to find ways in which I can communicate more quickly and directly with users of my products. This blog will be the first step on that road. I will use it to publish tips and tricks on using the software effectively, clarify things about it that may be confusing, and occasionally share my general musings about the programs, the mathematics underlying them and other related topics.

As different people use the programs for different purposes, and some of the theoretical foundations are quite difficult, I expect that there will be posts that seem rather esoteric to most readers. Over time, I hope to develop a system of tags that will make it easier for everyone to find posts that interest them. You can help by leaving your comments and telling me what your profession and educational background is, what you use or plan to use Systre or 3dt for, and by asking many, many questions.