In order to tackle molecular simulation and visualization challenges in key areas of materials science, chemistry and biology it is necessary to move beyond fixed software applications. The Avogadro project is in the final stages of an ambitious rewrite of its core data structures, algorithms and visualization capabilities. The project began as a grass roots effort to address deficiencies observed by many of the early contributors in existing commercial and open source solutions. Avogadro is now a robust, flexible solution that can tie in to and harness the power of VTK for additional analysis and visualization capabilities.
Avogadro 2 is a chemical editor and visualization application, it is also a set of reusable software libraries written in C++ using principles of modularity for maximum reuse. The development of the first generation Avogadro application and library is documented in our paper, and this remains the preferred method of citation at present. The motivation for rewriting Avogadro, along with improvements and changes made in Avogadro 2 are summarized in our Source article. We provide a set of permissively licensed, open source, cross platform software components in the Avogadro 2 libraries, along with an end-user application with full source code, and binaries.
The library features updated and improved rendering, where we built upon the abstraction provided by previous API, but implemented a simple scene graph. This makes use of features such as impostor sphere rendering, resulting in significant rendering speed improvements while improving the quality of the visualization. The core is built for scalability, looking to enable the analysis of larger chemical structures and simulations being produced by computational chemistry codes today. Emphasis has also been placed on making it even easier to extend, using simple Python scripts to add simulation input capabilities, and data input/output along with access to full-blown C++ plugin APIs where more control is required.
Avogadro is now able to make full use of the visualization capabilities of VTK, in addition to its own powerful rendering capabilities. This means that complex visualization, involving techniques such as volume rendering for point data, or streamlines for vector fields, will now become possible. The project is composed of two separate repositories, with the `avogadroapp’ repository offering a full demonstration of how to use the libraries in an end-user application. The `avogadrolibs’ repository contains all of the libraries, with the option to only build subsets. The development process uses distributed version control (Git), testing (CTest/CDash), and automated binary generation.