* Correct AmoebaAngleTorsion in test_Amoeba18Nucleic of TestForceField
* Update processTinkerForceField to handle latest .prm Tinker files
* Update amoeba2018 XML files
* Update amoeba2013 XML files
* Update amoeba2009 XML files
* Adapt addTorTor to new format in the .prm files
* Fix TorsionTorsion
* Also update the total energy in test_Amoeba18Nucleic
* Update amoebabio18.prm
* Fix nucleic acid test energies
* Correct AmoebaAngleTorsionForce params
* Add new addTorTor to TinkerFiles
* Revert unit fix
* Change to .pdb file which Tinker likes
* Update test_Amoeba18BPTI
* Remove trailing zeros from XML files
* Leave trailing zeros only on 2018 ff
* New element names in 2018
* More digits for surfaceAreaFactor
* More digits for surfaceAreaFactor
* More digits
* Remove debugging print
* Add support to 2009 and 2013 AMOEBA ffs to processTinkerForceField.py
* Add FF specific residues XML files
* Delete old residuesFinal.xml
* Update AMOEBA XML ffs
* Update FFs
* Fix some formatting issues
* Fix "." in scientific notation
* Remove old assertions
* Initial implementation of C++ API
* Add kernel interface and information for API generation
* API updates for updating electrode parameters
* Add serialization proxy for ConstantPotentialForce
* Update file headers
* Add CG error tolerance and fix units on getCharges() return value
* Initial implementation of matrix solver
* Fixes and conjugate gradient solver
* Try to fix Linux and Windows builds
* Make sure charge constraint target is on total charge
* Restore handling of exceptions like NonbondedForce since they won't involve electrode atoms
* Ameliorate numerical instability in constrained conjugate gradient
* Fix uninitialized pointers, memory leak, and style
* Set CG tolerance units in Python API
* Test ConstantPotentialForce serialization
* Read/write ExceptionsUsePeriodicBoundaryConditions as bool
* Improve constrained conjugate gradient robustness to roundoff error accumulation
* Recompute matrix if electrode atoms move due to setPositions()
* Tolerance is now in gradient (potential) units again
* Add neutralizing background correction
* Add Python API tests
* Fixes for CG and nonbonded exceptions
* Add initial tests checking against existing NonbondedForce behavior
* Expand test suite and fix some implementation issues
* Add additional tests using larger reference system
* Add Gaussian test
* Finish test against reference computation
* CPU platform implementation
* Fixes for compilation on some platforms
* Fixes for constant potential with AVX/AVX2
* Test linking CPU PME library to constant potential test directly
* Older SWIG versions don't support Python set to C++ set conversion
* Add user guide entry
* Increase speed of reference test
* Conditional building constant potential CPU test is unreliable
* Debugging
* Miscellaneous fixes and improvements for CI
* Cache charges so solver will not run if system and coordinates have not changed
* Preconditioner flag, stability, and automatic detection improvements
* Add GPU platform-specific constant potential kernel classes
* PME and device-host I/O changes to support constant potential
* Initial common constant potential implementation
* Constant potential fixes:
* Fix preconditioner PME position/charge save/restore logic
* Fix reduction synchronization in constant potential solver kernels
* Add double-float accumulation for conjugate gradient solver when
double unsupported by hardware
* Improve conditioning of a test system, and make sure particles are in or
out of cutoff for consistency and ease of comparing between platforms
* Reorder guess charges for CG when atom reordering changes positions
* Remove PME queue for now
* Trying to debug optimized direct space derivative kernel
* Remove extraneous debugging lines
* Style updates; just make CPU preconditioner double precision
* Debugging updated optimized direct derivatives kernel for all but OpenCL CPU
* OpenCL CPU implementation of direct space derivatives, and cleanup
* Try to make test even shorter to not time out on CI
* Temporary - Debugging
* Debugging
* Debugging
* Debugging
* Debugging
* Remove debugging code and fix reduction synchronization
* Fix other reductions
* Debugging - are tests hanging or just slow on CI?
* Debugging
* Debugging
* Fix macro for case when double precision is available on hardware
* Remove changes for debugging again
* Try to improve matrix solver cache locality by uploading transpose
* Fixes for atom ordering and periodic images
* Can't rely on reorder listener for cell offset updates
* Test reducing number of contexts and timing for CI
* Debugging
* Remove timing code and revert debugging changes
* Matrix solver and plasma term optimizations
* Reduce CG solver kernel calls and downloads
* Don't read back convergence flag from global memory
* Update PME due to refactoring in master branch
* Faster matrix solver (1st step)
* Faster matrix solver for CUDA
* Faster matrix solver compatibility with non-CUDA platforms
* Matrix solver fixes
* Use warp shuffle reductions when possible
* Attempt to work around intermittent compiler crash in Intel CPU OpenCL
* Optimize CG solver kernel 1
* Rework CG solver so some kernels can use more than 1 block
* Don't run out of shared memory
* Asynchronously download convergence flag while clearing buffers
---------
Co-authored-by: Evan Pretti <pretti@sh03-17n15.int>
* Replace C++ code examples in Python API docs
* Use newer Python for building docs
* Remove sphinx version pin
* Add Python versions of code examples
* Minor edit
* Add Python version of one more code example
* Attempt at fixing failing pypy build
* Try using mambaforge
* Debugging
* A different approach to using mambaforge
* Try a separate environment file for pypy
* add guide for dev builds
* hosted env file for openmm-8 beta
* explain how to host an env
* add a namespace to support different os
* pin all the versions
* add version pins and env name
* Added pytest
* update envs
* add guide for dev builds
* hosted env file for openmm-8 beta
* explain how to host an env
* add a namespace to support different os
* pin all the versions
* add version pins and env name
* Added pytest
* Use PocketFFT instead of FFTW
* Minor cleanup
* Use PocketFFT instead of fftpack for reference platform
* Remove FFTW as a dependency
* Converted a test case to use PocketFFT
* Fixed an incorrect comment
* lets see what blows up!
* need to add env file, different name than normal
* lets see if setting an env will help it find the base
* try forcing the use of mamba
* this should break everything, but might make osx work
* lets see if this fixes the issue with the extension
* ci bump
* lets see if a different installer will work
* single thread build to see error better
* ci bump
* ci bump
* can't build opencl on m1
* add salt to url to prevent caching
* rename to reflect that we can just build CPU
* going to add a M1 x86_64 buld and an arm64 build
* lets see if I broke 86
* now lets see what happens with arm
* forgot to add new build files
* try older python version
* newer python?
* try mini forge
* ci bump
* unpin doxygen and remove gromacs as a dep
* double check where x86_64 libs are getting pulled in
* ci bump
* try and use conda compiler toolchain and set arch
* weird things happend with setting arch
* lets see what the arch the runner thinks it is using
* try printing arch again
* undo shell change
* remove changes to shell
* make sure I don't break other buikds
* fix syntax issue and add new label to actionlint
* ci bump
* ci bump
* lets focus on arm64 builds for now
* ci bump
* ci bump
* try setting arch to build with arch command
* split steps up so other builds don't break
* see if the cmake step is the only one we need to arch-ify
* cleaning things up
* cleaning things up
* set -j2 for make
* we can use the same build step as the otehr builds
* now lets see if it can install gromacs
* no gromacs, no problem?
* remove bit of logic stopping the build
* pin doxygen to 1.9.1
* try building openCL
* ci bump
* ci bump
* Adding support for new AMOEBA features
* Support modern method of specifying in-plane angles
* Implemented stretch-torsions
* Implemented angle-torsions
* More AMOEBA fixes
* Bug fix
* Converted AMOEBA 2018 force field
* Added documentation for AMOEBA 2018
* Added a missing file for tests
* Proof of concept matching current behaviour with Breathe
* Reorganise C++ API docs to work without autosummary
* Revert to Sphinx-native search
* Move remaining pip deps to conda
* Remove unnecessary lunrsearch templates
* Remove lunrsearch from cmake
* Tidy up layout of API docs
* Get code blocks to work with Breathe
Breathe doesn't seem to support the Doxygen <preformatted> tag.
It does support the <code> tag, but better yet it supports using
<verbatim> tags to embed rst into docstrings. This commit changes
all <pre> tags to use RST verbatim, and updates the Python
documentation machinery to support it too.
* Clarified some language
* Have doxygen exclude undocumented classes and have sphinx fail on warnings for C++ API docs
* List custom forces and integrators last
* Add breathe to documentation CI
* Typo
* Fix link to custom forces in extras.rst
* Have Breathe process only public classes
* Strip OpenMM:: prefix from rst files to avoid colons in links
* Remove existing private classes from EXCLUDE_SYMBOLS
* Add comment to C++ cmake describing why we promote warnings to errors
* Revise documentation build instructions for new dependencies
* Add draft GHA-based CI for Linux
* Fix events
* Dup key
* Fix path
* Update env vars
* More fixes
* Fix env vars again
* add doxygen
* add sudo
* Typo
* upgrade CUDA
* escape newlines
* more backslashes
* fix CUDA_APT
* more env vars fixes
* fix missing file
* acumulate env_vars
* build python wrappers only if requested
* add pytest
* use $GITHUB_ENV
https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#environment-files
* use ${GITHUB_WORKSPACE}
* Pin older gromacs
* add windows
* Provide default values for unbound vars
* fixes
* this is powershell not cmd
* update envs
* win fix
* make windows use cmd
* Change install prefix
* fixes
* better env files
* Increase timeout threshold
* set xcode to 10.x
* specify action version
* fix sdk in macos
* split jobs a bit more
* build wrappers even if tests failed for core
* revert & resort build/test
* fix run logic?
* install envs in D:\
* add more cudas
* allow longer test times
* sudo that
* fix cuda ver checks
* another little fix
* one more
* missing package
* missing dev packages
* missing backslash
* add nvprof
* factor scripts out
* export CUDA_PATH
* no quotes in env var
* add more cudas
* fix ci name
* fix flags
* typo
* missing parenthesis
* add cuda 11.2 urls
* add retry loops for online installations
* add library existence tests
* verbose
* fix sets
* CPU and PME are not built in GPU variants; do not test for those
* quote?
* fix windows checks
* add macos opencl
* disable opencl tests on macos (but build anyway)
* add docs
* cd into build for docs!
* install then cd
* pin sphinxcontrib-bibtex
* we need tex in the system
* split docs into a separate job
* simplify retrying
* simplify retrying 2
* do install
* fix tlmgr installation
* more tex packages
* one more
* one more
* add textcomp to docs
* usepackage[utf8]{inputenc}
* switch to xelatex?
* add xetex
* more fonts
* do not use xindy
* tables can't contain blocks and use tabularcolumns at the same time
https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html?highlight=tabular#directive-tabularcolumns
* build libs in docs too
* update docs deps; bring in pdfs
* kill server after 404 checks
* chage 404 checker
* explicit locations needed
* cumulative exit codes
* override set -e
* update README badges
* add ppc / arm
* missing vbar
* not it
* one too many extensions
* do not test gromacs
* manage workspace
* source conda.sh
* add python version to matrix vars
* source first thing
* disable unbound checks
* add compilers
* some more cuda stuff
* add CPU only ppc64le
* link through stubs
* One more way to obtain HOST_USER_ID?
* let cmake find cf's opencl
* Try with GCC7
* add timeouts for docker based runs
* add several attempts for stochastic failures
* add tests with conda forge compilers
* do not parallelize pytest in docker runs
* exclude some known slow tests
* enable ccache
* forgot conda shell
* No need for macos sdk retries
* \ -> ^
* fix timestampt windows
* export env vars for current step too
* unneeded quotes windows?
* disable compression on windows?
* add ccache in docker too
* group commands
* fix syntax error
* fix version spec
* Increase timeout in Docker runs
* heh, it's double colon
* fix cache timestamp in windows
* escape % with %%
* ccache in docs too
* don't use wrapper package in windows; call vcvarsall directly
* More docker variants
* Handle ccache env vars in yaml
* Re-enable parallel pytest in Docker runs
* Delete unwanted azure ymls that I didn't end up using
* add some comments
* Update badge URL
* is that path messing with windows ccache?
* add CI-README
* Reduce CI matrix
* increase timeouts
* Add GCC7 on PPC QEmu again (temporarily, just for debugging)
* add docker instructions for local debugging
* fix start_docker_locally
* skip some url checks in docs
* Use new package name
* update link
* Top level Python module is now "openmm"
* Updated module names in examples
* Updated module names in documentation
* Updated module in CI scripts
* Added deprecation warning
* Use list-comprehension in Python code
A minor change, but slighly easier to understand the initialization of
`parent_exclude_list` in my opinion.
* Implement __ne__ in Python classes that has __eq__
In Python 3, `__ne__` is automatically implemented as `not __eq__`.
However, in Python 2 it seems to be implemented as `not is` (so based on object
identity).
Based on setup.py [0] which says that "OpenMM requires Python 2.7 or better", it
should be useful to have better support for Python 2 :)
This was already done in 4 of the 12 classes that implements `__eq__`
```
>>> class WildCard(object):
... def __eq__(self, other): return True
>>> w = WildCard()
>>> w == 42
True
>>> w != 42
True
>>> w != w
False
```
[0]: 5cef29ce8d/wrappers/python/setup.py (L237)
* Use umambiguous floor division for index calculations in Python
This makes the code work as intended if run as Python 3
```
$ python2 -c 'print(3/2, 3//2)'
(1, 1)
$ python3 -c 'print(3/2, 3//2)'
1.5 1
```
* Use `with` for file handling in Python
* Use `is None` instead of `== None` in Python
This is recommended in PEP8:
> Comparisons to singletons like None should always be done with is or is not, never the equality operators.
> - https://www.python.org/dev/peps/pep-0008/#programming-recommendations