## 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*).

- Calculating spline design matrices (design_??? in
**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.

- 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