This is a roadmap for the future of Fireball.
My vision is to raise Fireball as a friendly, robust, well-tested/documented, accurate and widely-use software for High Throughput Materials analysis.
The code must to be fast, robust, well written, accurate and sufficiently well tested.
We must have a clear idea of the power of the code but also its limitations, we need scientific proofs
of their accuracy to reproduce the geometry, dynamics, energetics and their derivatives, band structures, and more.
We will create a code with a brand recognition, papers showing that recognition.
This is an ambitious plan to put Fireball as fast and reliable atomistic simulation package on the Tight-Binding
level of Theory. The next topics are my current list of tasks that we should address in the forthcoming months.
I will divide the topics by areas of expertise rather than urgency or priority. Feel free to open discussion about
some other tasks that I missed or tasks that should not be on this list.
Fireball will be developed on Github, with documentation on Github Pages. Learn about Git, one nice document was written on Authrea: A quick introduction to version control with Git and GitHub
This roadmap is written on Authorea that is also integrated with Github so we have a coherent set of tools for direct the project as effectively as possible.
For software development we will work using a Continous Integration model, test driven development and fork-modify-test-merge where I (Guillermo) will be the official merger and gatekeeper for the project. The reason for that is not control but freedom, you can fork Fireball, work by your own, break things, do a mess if you want. When you are erady to merge, your should test your branch, assure that all tests succeed, adding new tests for your own development and asking permission for merge. I will check that the merge will not create ruptures with the code and will have a stable and robust code as a result.
We need test-coverage, right now we start with 0%, achive 10% will be relatively easy, 20% we can get in the first month, 30% is a poor but decent level by the end of the summer 2016. The size of the code and the fragmentation of the drivers will make challenging achieve 50% but that should be our goal by the end of the year.
We need a platform for testing, I (Guillermo) am using Travis-CI for PyChemia. The nature of Fireball, being a Fortran code we should consider something like Buildbot.
Fireball should run and pass test with Intel and gfortran compilers. That is not the case right now for gfortran and that is one important task. I propose as minimum Intel 2011 and Gfortran 4.6
Implement a clean, multilevel scheme for paralelism, including accelerators (GPU, XeonPhi), OpenMP and MPI. I think that we can start with Magma for diagonalization. There are several levels of parallelization to explore, domains (atoms), concurrency for structures. We can work on the different levels independently.
Transtion to HDF5 fileformat for Fdata and large numerical outputs
Using a more clean input scheme for begin and create, maybe using FoX for parsing XML inputs
Using libxc to include more XC funcntionals
Adding support for spin polarized calculations
Identify a niche market for Fireball and explote it. Right now I am considering Zeolites and MOFs. Structures with large number of atoms to be computed by DFT.
A large scale comparison between properties computed by Fireball vs DFT. Geometry, energetics and beyond
Creation of a well tested set of Fdata for a set of common atoms. New species could be added to the Fdata after some initial good set.
The first task is the following:
Create accounts on Github and Authorea, send me your usernames so i could add you to the organization and projects
Read about Github and Git. Github is a webservice that uses git for version control. They have a nice 10 minute tutorial. Do it, is simple and you will learn the basics in no time.
Enter the webpage:
git clone https://github.com/fireball-dft/thunder.git
Now create your own fork of thunder by using the "fork" button on the webpage. Use the
git clone command to clone your own forked repository
Do some small change, maybe to the "README.md" or some other harmless file. Commit with
git commit and push to your own forked repository with
Now you can enter into the webpage and ask me to merge your modifications into the the main code.
Please select one or several topics that I mention above those that capture your attention, those where you feel motivation to pursue. Do not feel bad for choosing something that you do not know much about it. Motivation always goes faster than knowledge.