-
Notifications
You must be signed in to change notification settings - Fork 534
Checklist for Adding a New Feature
peastman edited this page Aug 19, 2019
·
1 revision
When adding a new feature to OpenMM, be sure all of the following have been done. Not all items apply to all features, but any of these that are applicable need to be completed before the feature is merged.
- Does it work on all platforms (Reference, CPU, CUDA, OpenCL)?
- Are there test cases?
- Is it serializable? For new Forces or Integrators, add a proxy, register it in SerializationProxyRegistration.cpp, and add a test case. For changes to existing classes that get serialized, update the existing proxy and test case, and be sure to increment the version number written by the proxy.
- Does it work from all languages (C++, Python, C, Fortran)? C and Fortran will usually work with no changes. It's very rare that the wrapper generator needs to be updated to support a new feature. Python often requires minor changes to swigInputConfig.py, such as to specify units.
- Is it fully documented (both in the API documentation and in the manual)?
- Does ForceField (and other appropriate classes) support it?
- If there's a new public header, did you add it to OpenMM.h?