GSoC is coming to a close! It has been a productive summer working with Avogadro2. I was able to complete all of my primary goals and contribute in a few extra areas as well.
Work Accomplished
Here is a list of the major contributions that I was able to make towards the project:
- Added POSCAR (from Vienna Ab Initio Simulation Package) format reader and writer. This is used by a lot of computational materials science groups.
- Added an "Import Crystal from Clipboard" feature. This was present in Avogadro 1 and allows the user to copy a crystal file to their clipboard and import it from there. It is particularly useful for POSCAR format due to the way files are named.
- Added a supercell builder. This is helpful for visualization and situations that require a supercell.
- Added spglib to Avogadro2. Spglib is a library written in C that allows for many useful crystal operations related to symmetry and space groups.
- Added space group perception using spglib.
- Added functions using spglib that allow users to primitive reduce a crystal, conventionalize a crystal, and symmetrize a crystal.
- Added functions to fill a unit cell by using symmetry operations for a space group, and added functions to reduce a unit cell to its asymmetric unit.
Here is a list of minor contributions (that were not in my primary goals) that I was able to make towards the project:
- Added undo/redo operations for already existing crystal features and newly added crystal features.
- Added undo/redo text in the user interface to clarify the operation that would be performed.
- Improved the cmake files so that VTK can be more easily turned on or off.
Here is a list of some bug fixes that were made:
- Fixed a few bugs in crystal functions (one involving transforming atoms and one involving setting the cell parameters).
- Improved cmake files so that some options were set at the right time.
- Fixed GUI bug where the center and radius of a scene were not being updated properly (this resulted in clipping).
- Fixed a few small memory leaks in an assignment operator.
- Fixed some bugs in the atomic coordinate editor (and improved it so that the user experience is smoother).
Descriptions and further discussion of the major contributions can be found at the following two links:
Contributions before midterm (June 27):
Contributions after midterm (June 27):
A more detailed look at the code changes that were made can be viewed from the following links. The commits that were a part of the GSoC work are from about May 10, 2016 to August 23, 2016. Links are ordered by decreasing number of commits:
In addition, for Avogadro 1, I was able to assist in creating the new Windows executable for the new release: Avogadro 1.2.
Work Still in Progress
Although I finished my primary goals for Avogadro 2, I started some extra work that I will continue working on after GSoC ends. Probably the most significant is adding YAeHMOP (Yet Another extended Hückel Molecular Orbital Package). This can allow Avogadro to perform quick semi-empirical quantum mechanical calculations using Extended Hückel Theory. I mentioned this in more detail on my blog post containing my contributions after the midterm, but this feature could potentially add many different types of quick semi-empirical quantum mechanical calculations that could be useful when analyzing a molecule or crystal. I've been adding it to Avogadro 1 first, and then I'll be adding it to Avogadro 2 next. My work so far with preparing YAeHMOP for Avogadro can be found here:
https://github.com/greglandrum/yaehmop/commits?author=psavery
https://github.com/greglandrum/yaehmop/commits?author=psavery
I've also been working on improving the undo/redo operations while drawing to make it more user-friendly, and I've been adding more undo/redo operations to different features.
In conclusion, my work this Summer seems to have been fairly successful! I'm glad that Avogadro2 has these new additions, and I hope it does well in the future!
Thanks for reading!
Patrick Avery