1. 06 Apr, 2026 1 commit
  2. 30 Mar, 2026 1 commit
  3. 10 Feb, 2026 1 commit
    • Evan Pretti's avatar
      GPU implementation of L-BFGS (#5198) · 4ab645ea
      Evan Pretti authored
      * Make reference/CPU minimizer into a kernel
      
      * Add per-platform support for GPU minimization
      
      * Initial implementation of GPU minimization
      
      * Fixes
      
      * Increase robustness when initial gradient is huge
      
      * Handle overflow leading to non-finite values gracefully
      
      * Handle large forces in single precision more robustly
      
      * Optimize kernels
      
      * Fix kernel launch size
      
      * Update banner years
      
      * Don't create MinimizeKernel until first minimization requested
      
      * Make some compile-time constants into kernel arguments
      
      * Consolidate scale calculation kernel
      
      * Condense alpha/beta reduction kernels using atomics
      
      * Condense line search dot kernels with reductions
      
      * Remove a download, and download grad norm separately
      
      * Asynchronously check lbfgs convergence condition
      
      * Restructure line search to avoid download waiting
      
      * Start line search preemptively in case CPU evaluation is not needed
      
      * In rare cases, constraint error might not decrease after one optimization round
      
      * Better handling of unsupported 64-bit atomics, use FLT_MAX
      
      * Pick gradient mode based on GPU vs. CPU evaluation
      
      * Rework getDiff/getScale reduction, remove reduceBuffer
      
      * Older CUDA might not like float hex literals
      
      * Fix error in a comment
      4ab645ea
  4. 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
  5. 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
  6. 23 Sep, 2025 1 commit
  7. 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
  8. 26 Aug, 2025 1 commit
  9. 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
  10. 12 Aug, 2025 1 commit
    • 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
  11. 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
  12. 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
  13. 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
  14. 16 Dec, 2024 1 commit
  15. 27 Nov, 2024 1 commit
  16. 22 Nov, 2024 1 commit
  17. 06 Sep, 2024 1 commit
    • Peter Eastman's avatar
      Optimize updateParametersInContext() (#4610) · 78902bed
      Peter Eastman authored
      * Optimize CustomNonbondedForce.updateParametersInContext()
      
      * Optimized uploading changed values to GPU
      
      * Optimized updateParametersInContext() for lots of bonded forces
      
      * Optimized updateParametersInContext() for CustomExternalForce
      
      * Optimized updateParametersInContext() for NonbondedForce
      
      * Code changes for HIP platform
      78902bed
  18. 17 Feb, 2024 1 commit
  19. 16 Sep, 2023 1 commit
  20. 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
  21. 12 Jun, 2023 1 commit
  22. 21 Jun, 2022 1 commit
  23. 01 Mar, 2022 1 commit
  24. 27 Jan, 2022 1 commit
    • Peter Eastman's avatar
      CustomNonbondedForce supports computed values (#3412) · 33c694d4
      Peter Eastman authored
      * Reference implementation of computed values for CustomNonbondedForce
      
      * CPU implementation of computed values for CustomNonbondedForce
      
      * Common implementation of computed values for CustomNonbondedForce
      
      * Serialization of computed values
      
      * ForceField supports computed values
      33c694d4
  25. 02 Nov, 2021 1 commit
    • Peter Eastman's avatar
      updateParametersInContext() can change tabulated functions (#3307) · 27bcb657
      Peter Eastman authored
      * updateParametersInContext() can change tabulated functions
      
      * Fixed error in building C wrappers
      
      * updateParametersInContext() can change tabulated functions for CustomCentroidBondForce
      
      * CustomNonbondedForce can update tabulated functions
      
      * CustomGBForce can update tabulated functions
      
      * CustomManyParticleForce can update tabulated functions
      
      * CustomHbondForce can update tabulated functions
      27bcb657
  26. 14 Oct, 2021 1 commit
    • Peter Eastman's avatar
      Created MonteCarloFlexibleBarostat (#3284) · 9270d590
      Peter Eastman authored
      * Created MonteCarloFlexibleBarostat
      
      * Improved test cases
      
      * Documentation for MonteCarloFlexibleBarostat
      
      * Added a missing include
      
      * Serialization for MonteCarloFlexibleBarostat
      
      * Added MonteCarloFlexibleBarostat to C++ API docs index
      
      * Added citation for MonteCarloFlexibleBarostat
      9270d590
  27. 20 Sep, 2021 1 commit
  28. 16 Sep, 2021 1 commit
  29. 28 Feb, 2021 1 commit
    • Peter Eastman's avatar
      Point based geometric functions for custom forces (#3037) · a85c2428
      Peter Eastman authored
      * Began implementing geometric functions on points
      
      * Started common implementation of point functions
      
      * Completed implementation of point functions for CustomCompoundBondForce
      
      * Implemented point functions for CustomCentroidBondForce
      
      * Implemented point functions for CustomManyParticleForce
      
      * Use point functions to simplify implementation of custom forces
      
      * Removed unnecessary code
      
      * Fixed typo
      a85c2428
  30. 28 Jul, 2020 1 commit
  31. 06 May, 2020 1 commit
  32. 04 May, 2020 1 commit
    • Andy Simmonett's avatar
      Nosé Hoover Middle scheme (#2600) · 5f374e1d
      Andy Simmonett authored
      * Convert Nose-Hoover into LF middle scheme by copying NH kernels
      
      * Rebrand VelocityVerletIntegrator as NoseHooverIntegrator
      
      * Consolidate NH tests
      
      * NoseHooverChainKernel begone
      
      * Make Windows builds happy
      
      * Add missing header for Windows build
      
      * Fix mistake in CommonKernels header
      
      * Add 6th Yoshida-Suzuki and make it the default
      5f374e1d
  33. 21 Feb, 2020 1 commit
  34. 14 Feb, 2020 1 commit
  35. 04 Feb, 2020 1 commit
  36. 24 Oct, 2019 5 commits