Become a Contributor!
If you have made some improvements to ForceSolve and want to svn commit them, contact us about joining the development team!
If you want to become a part of the project, but don't know where to start, take a look at the following improvement goals for the project.
Project Goals
- Speed Up The Core Solver
-
Scipy has a nice tutorial on several methods for speeding up execution of compute-intensive parts.
There are several options there I would like to explore, but don't have the time. The compute-intensive parts are:
- Calculating spline design matrices (design_??? in cg_topol).
- Calculating spline coefficients for design matrices (spline(self, x, nd) in cg_topol/bspline.py).
- FM: Compiling design matrices (type_sum_D2 in frc_match.py).
- FM: Calculating the Cholesky decomp. and forward+backward substitution functions in frc_match.py
- MD: Calculating forces and energies (???_force and ???_energy), especially pair_force in cg_topol/???.py).
- Special Pairwise Computations
- The pairwise computations mentioned above (cg_topol/pairs.py) could be greatly improved if we added and maintained a pair grid, where each atom was assigned to a grid cell. This would requiring adding a methods to cg_topol to initialize the grid, and another to assign atoms to it, while modifying pair_??? to use the pair_grid object maintained above.
- Extensibility
-
There are some niceties that I would also like to add:
- Adding appropriate tags to the cg.ff parser to specify the range of each interaction type. Currently, if you want to change the nonbonded cutoff you have to modify the spline_func call at the end of pair_type_calc in pairs.py. Ideally, we could pull this from a parameter during finalize_pair.
- Same goes for bond length ranges. Angles and Torsions are not so important, since their ranges won't change.
- Any suggestions for improving the overall layout of the code for enhanced clarity are welcome on the discussion board.