1. 30 Dec, 2025 1 commit
  2. 11 Dec, 2025 1 commit
    • Evan Pretti's avatar
      Add LCPO method (#5130) · adfd84c2
      Evan Pretti authored
      * Basic LCPO support
      
      * Add basic test for LCPO from a prmtop file
      
      * API for LCPOForce
      
      * Started LCPO reference implementation
      
      * Finished reference forces & test cases
      
      * Use other test for finite difference since grid might have discontinuous forces
      
      * Reference platform formatting
      
      * Initial implementation of CPU platform
      
      * Bugfixes
      
      * More vectorization and improve neighbor list query speed
      
      * Parallelize part of neighbor search
      
      * Check box size for LCPO with periodic boundary conditions
      
      * Fixes for updating parameters in context
      
      * GBSAOBCForce doesn't use first & last indices for updates, so no need for this optimization here
      
      * Changes to neighbor checking and optimization
      
      * Fixes and minor changes
      
      * Add global surface tension parameter
      
      * Only process half of the pairs in the neighbor list
      
      * Remove unnecessary checks
      
      * Initial version of common platform implementation
      
      * Asynchronously download neighbor list size
      
      * Debugging
      
      * Do pair precomputation in copyPairsToNeighborList
      
      * Recompute interactions instead of scanning neighbor list in inner loop
      
      * Condense position array before computations
      
      * Also make neighbor count download asynchronous on device
      
      * Fixes for kernel launching
      
      * Topology-based LCPO parameter assignment
      
      * Fixes, and use test system for LCPO with nucleic acids
      
      * Always raise instead of warn when LCPO parameters can't be assigned
      
      * Use Amber convention for phosphates
      adfd84c2
  3. 12 Nov, 2025 1 commit
    • Peter Eastman's avatar
      Created PythonForce (#5122) · 2fbed592
      Peter Eastman authored
      * Initial implementation of PythonForce
      
      * Continuing implementation of PythonForce
      
      * Tests for PythonForce
      
      * Fix memory leaks
      
      * Documentation for PythonForce
      
      * Fixed incorrect return type
      
      * Fix compilation error on Python older than 3.12
      
      * Handle all dtypes
      
      * Optimizations to PythonForce
      
      * Optimized getPositions()
      
      * Test all platforms
      
      * Fix test failures
      2fbed592
  4. 22 Oct, 2025 1 commit
  5. 12 Sep, 2025 1 commit
    • Evan Pretti's avatar
      Add constant potential method (#4870) · f55abcaa
      Evan Pretti authored
      
      
      * 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: default avatarEvan Pretti <pretti@sh03-17n15.int>
      f55abcaa
  6. 26 Aug, 2025 1 commit
  7. 14 Aug, 2025 1 commit
    • Peter Eastman's avatar
      Radius of gyration force (#5031) · 1b6236a8
      Peter Eastman authored
      * Reference implementation of RGForce
      
      * GPU implementation of RGForce
      
      * Serialization
      
      * Documentation
      
      * Fix compilation error
      
      * Fixed error building API docs
      1b6236a8
  8. 12 Aug, 2025 2 commits
    • Emilio Gallicchio's avatar
      Variable distance-based displacements for ATMForce (#4776) · 3645e1ee
      Emilio Gallicchio authored
      
      
      * Variable displacements based on particle positions
      
      * set variable displacements when adding particles
      
      * update documentation
      
      * address compilation error in OpenMMFortranWrapper
      
      * update python API tests
      
      * fix stray 'and'
      
      * addParticle() without arguments add a particle that is not displaced
      
      * pack displacement particles into int4
      
      * put back default displacement removed in error
      
      * ATMForce interface with coordinate transformation objects
      
      * revise variable displacement API
      
      * documentation, formatting, serialization
      
      * Fixed C and Fortran wrappers
      
      * Fixed Python wrappers
      
      * Fixed factory
      
      * Sort files to ensure classes are listed in the correct order
      
      * Converted APIUnits test to new ATMForce API
      
      * write class name
      
      * skip the documentation for forward declarations
      
      * undo 9e91d0b since it does not fix the doc build
      
      * remove temporary doc files for nested classes
      
      * Clean away tabs
      
      ---------
      Co-authored-by: default avatarPeter Eastman <peastman@stanford.edu>
      3645e1ee
    • Peter Eastman's avatar
      Convert C++ types to Python types in API docs (#5036) · 4a956a72
      Peter Eastman authored
      * Convert C++ types to Python types in API docs
      
      * Translate some more types
      
      * Convert return types that are STL containers
      4a956a72
  9. 11 Aug, 2025 1 commit
    • Peter Eastman's avatar
      Adaptive quantum thermal bath (#4995) · 2af004b6
      Peter Eastman authored
      * Began implementing QTBIntegrator
      
      * Adaptation and deconvolution
      
      * Continuing reference implementation
      
      * Continuing to implement QTBIntegrator
      
      * Use common thread pool
      
      * More tests, documentation, and threading
      
      * Fix segfault
      
      * Serialize adapted friction when creating a State
      
      * Beginning of GPU implementation
      
      * Added missing files
      
      * Bug fixes
      
      * Fixed inverse FFT
      
      * Continuing GPU implementation
      
      * Checkpointing
      
      * Bug fixes
      
      * Test cases run faster
      
      * Changes needed for latest main branch
      
      * Minor optimizations
      
      * Documentation
      
      * Fixed atom reordering
      
      * Added parahydrogen test case
      
      * Workaround for bug in Microsoft's compiler
      
      * Added a Python test
      
      * Normalize kernel in deconvolution
      
      * Minor documentation improvements
      2af004b6
  10. 23 Jul, 2025 1 commit
    • Peter Eastman's avatar
      Virtual site for symmetric molecules (#4185) · bb3073d4
      Peter Eastman authored
      * Reference implementation of SymmetrySite
      
      * Common implementation of SymmetrySite
      
      * Removed duplicated code
      
      * Serialization for SymmetrySite
      
      * Fixed compilation error building C wrapper
      
      * Added SymmetrySite to user guide
      
      * Bug fix
      
      * Added P21 test case
      bb3073d4
  11. 28 Apr, 2025 1 commit
    • Peter Eastman's avatar
      Added computeCurrentPressure() to MonteCarloBarostat (#4881) · bce0c133
      Peter Eastman authored
      * Added computeCurrentPressure() to MonteCarloBarostat
      
      * Use instantaneous temperature to compute pressure
      
      * Added computeCurrentPressure() to MonteCarloAnisotropicBarostat
      
      * Added computeCurrentPressure() to MonteCarloMembraneBarostat
      
      * Fixed compilation error
      
      * Fixed error in typemap
      
      * Added documentation on computing pressure
      
      * Fixed CUDA compilation errors
      
      * Made test case more robust
      
      * Made a test case more robust
      
      * Added computeCurrentPressure() to MonteCarloFlexibleBarostat
      
      * Fixed compilation error
      
      * More documentation on computing pressure
      bce0c133
  12. 14 Apr, 2025 1 commit
    • Peter Eastman's avatar
      DPDIntegrator (#4799) · de180e4e
      Peter Eastman authored
      * Created DPDIntegrator class
      
      * Reference implementation of DPDIntegrator
      
      * Build neighbor list for DPDIntegrator
      
      * Minor fixes
      
      * Documentation for DPDIntegrator
      
      * Python API for DPDIntegrator
      
      * Preliminary OpenCL implementation of DPDIntegrator
      
      * Enable USE_PERIODIC
      
      * Use updated positions in DPD thermostat
      
      * Working on neighbor list for OpenCL DPDIntegrator
      
      * ReorderListener for particle types
      
      * Serialization for DPDIntegrator
      
      * CUDA implementation of DPDIntegrator
      
      * HIP implementation of DPDIntegrator
      
      * Fixed compile error in Python wrapper
      
      * Fixed compile error in wrappers
      
      * Fixed uninitialized memory in reference neighbor list
      
      * Added DPDIntegrator to C++ API docs
      
      * Fixed incorrect launch size
      
      * Fixed nan in DPD random number generator
      
      * Minor optimizations
      
      * Improved load balancing
      
      * Fixed an indexing error
      
      * Neighbor list uses the maximum cutoff of any force
      
      * Fixed HIP compilation error
      
      * Fixed access to invalid memory
      
      * Added test case for diffusion coefficient
      
      * Try to debug segfaults on CI
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Possible fix
      
      * Debugging
      
      * Debugging
      
      * Debugging
      
      * Use correct block size on CPU OpenCL
      
      * Workaround for bug in Intel's OpenCL for CPUs
      
      * Removed an unnecessary define
      
      * Removed debugging code
      
      * Include Dart
      
      * More Intel workarounds
      
      * Workaround for error in NVIDIA OpenCL
      de180e4e
  13. 19 Feb, 2025 1 commit
  14. 20 Nov, 2024 1 commit
    • Michael J. Schnieders's avatar
      Updates to AmoebaVdwForce, AmoebaGeneralizedKirkwoodForce and AmoebaWcaDispersionForce (#4647) · 61a908cd
      Michael J. Schnieders authored
      * Update the AMOEBA OpenMM API for vdW, GK and WCA
      
      * Changes needed for the Corrigan et al Generalized Kirkwood model and minor changes to the vdW force to support CpHMD
      
      * Add casts to real for uses of POW in GK; Pass force by reference within the WCA kernel
      
      * Update swigInputConfig for Amoeba vdW and GK forces
      
      * Update TestAPIUnits.testAmoebaVdwForce
      
      * Set the units for getSolventDielectric and getSoluteDielectric to None
      
      * Update default dispersion offset parameter for the AmoebaWcaDispersionForce
      
      * Remove overloaded getParticleParameters and setParticleParameters from AmoebaGeneralizedKirkwoodForce
      
      * Update the AmoebaWcaDispersionForce TestAPIUnits tests to reflect using the correct units for the C++ parameter default values; Update the alanine-dipeptide-amoeba-forces to reflect the updated GK model
      
      * Move neck descreening constants into AmoebaGeneralizedKirkwoodForceImpl; set the default GK dielecticOffset to 0.09; set the default WCA shctd parameter to 0.82
      
      * Fix Python test cases for WCA and GK
      
      * Load AMOEBA/GK parameters into an array of float4
      
      * Cleaned up the AmoebaGeneralizedKirkwoodForce based on feedback from Peter; the one case where backwards compatibility remains a challenge is application of the dielectric offset parameter - in the prior code this was only applied to the nonpolar cavity term, but not to calculation of Born radii; in this revision the dielectric offset is applied to BOTH the nonpolar cavity term and to calculation of Born radii. At this point I can't think of elegant way to maintain backwards compatibility that isn't confusing, nor does it make sense (at least to me) to only apply the concept of the dieletric offset to one aspect (i.e. only to nonpolar cavity or only to Born radii calculation) but not to both.
      
      * Remove 'using std::vector' from AmoebaGeneralizedKirkwoodForceImpl.h; divide by 10 instead of multiplying by 0.1f in amoebaGk.cc
      
      * Added a parameter called descreenOffset, which is applied during calculation of effective Born radii for GK. The parameter dielectricOffset is only used for the nonpolar cavity term consistent with its prior use. All tests in TestAmoebaGeneralizedKirkwoodForce.h are now backwards compatible with their behavior prior to this PR.
      
      * Change two constants in amoebaGk.cc to single precision; Improved the documentation for getNeckConstants in AmoebaGeneralizedKirkwoodForceImpl.h
      
      * Fix comment for setTanhRescaling in AmoebaGeneralizedKirkwoodForce.h, Fix comment for setTanhParameters in AmoebaReferenceGeneralizedKirkwoodForce.h; set the type of parameter GeneralizedKirkwoodTanhRescaling to bool in AmoebaGeneralizedKirkwoodForceProxy.cpp; In ReferenceCalcAmoebaGeneralizedKirkwoodForceKernel return references of per particle parameters instead of copies; update AmoebaReferenceKernels.h method signatures for per particle parameters to return const vector references
      
      * Minor tweaks to the documentation for the tanh rescaling flag
      
      * Improve the comments for the get and setTanhParameters in AmoebaGeneralizedKirkwoodForce.h and AmoebaReferenceGeneralizedKirkwoodForce.h
      61a908cd
  15. 05 Sep, 2024 1 commit
  16. 23 Aug, 2024 1 commit
  17. 13 Feb, 2024 1 commit
  18. 03 Jan, 2024 1 commit
  19. 05 Dec, 2023 1 commit
  20. 16 Nov, 2023 1 commit
  21. 01 Nov, 2023 1 commit
  22. 19 Sep, 2023 1 commit
  23. 02 Aug, 2023 1 commit
    • Emilio Gallicchio's avatar
      Draft integration of the Alchemical Transfer Method (ATM) plugin (#4110) · d8c67699
      Emilio Gallicchio authored
      * Draft integration of the Alchemical Transfer Method (ATM) plugin
      
      * Attempt to store and retrieve forces--does not compile
      
      * Implement addForce()/getForce() methods
      
      * Throw exception when specifying properties without a Platform (#4130)
      
      * Fixed DOF calculation for NoseHooverIntegrator (#4128)
      
      * Fix variance in documentation of VerletIntegrator (#4138)
      
      * Python API for ATMForce
      
      * Fixed compilation error
      
      * Minor cleanup of formatting and documentation
      
      * Files for ATMForce test cases
      
      * More cleanup
      
      * Removed variable groups
      
      * Test ATMForce with two particles
      
      * More tests for ATMForce plus fixes
      
      * Added missing header
      
      * Rework interface to pass displacements as vector of parameters
      
      * Revert "Rework interface to pass displacements as vector of parameters"
      
      This reverts commit 5e092031f31ded1137b677588f007add1c2d6f82.
      
      * Test with nonbonded force
      
      * Allow energy expression to be custom...
      d8c67699
  24. 31 May, 2023 1 commit
  25. 18 Apr, 2023 1 commit
  26. 14 Mar, 2023 1 commit
  27. 20 Jan, 2023 1 commit
  28. 11 Apr, 2022 1 commit
  29. 15 Mar, 2022 1 commit
  30. 01 Mar, 2022 1 commit
  31. 15 Feb, 2022 1 commit
  32. 27 Jan, 2022 1 commit
  33. 25 Jan, 2022 1 commit
  34. 01 Oct, 2021 1 commit
  35. 16 Sep, 2021 1 commit
  36. 11 Aug, 2021 1 commit
    • Josh A. Mitchell's avatar
      Move to actively maintained dependencies for API docs (#3201) · ae2fe2fd
      Josh A. Mitchell authored
      * 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
      ae2fe2fd
  37. 12 Mar, 2021 1 commit
  38. 04 Mar, 2021 1 commit
  39. 09 Feb, 2021 1 commit