Gromacs  2026.0-dev-20241204-d69d709
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables

Description

Generic GROMACS namespace.

Functionality for testing whether calls to mdrun produce the same energy and force quantities when they should do so.

Declares registerLegacyModules().

Registers command-line modules for pre-5.0 binaries.

Implements the gmx wrapper binary.

Defines function for computing Lennard-Jones interaction using SIMD.

Defines classes for accumulating Coulomb and VdW energy contributions.

Implements classes for accumulating Coulomb and VdW energy contributions.

Defines a class for masking (sub-) diagonal interactions in an cluster pair.

Defines function for computing Coulomb interaction using SIMD.

Declares the integrators for energy minimization and NMA.

Encapsulates membed methods.

Declares the simulator interface for mdrun.

Defines the dispatch function for the .mdp integrator field.

Convenience macro to help us avoid ifdefs each time we use sysconf.

Declarations of low-level utility functions for working with H5MD HDF5 files.

Declares the i/o interface to H5MD HDF5 files.

I/o interface to H5MD HDF5 files.

Author
Magnus Lundborg lundb.nosp@m.org..nosp@m.magnu.nosp@m.s@gm.nosp@m.ail.c.nosp@m.om
Author
David van der Spoel david.nosp@m..van.nosp@m.dersp.nosp@m.oel@.nosp@m.icm.u.nosp@m.u.se
Mark Abraham mark..nosp@m.j.ab.nosp@m.raham.nosp@m.@gma.nosp@m.il.co.nosp@m.m
Author
Joe Jordan ejjor.nosp@m.dan@.nosp@m.kth.s.nosp@m.e
David van der Spoel david.nosp@m..van.nosp@m.dersp.nosp@m.oel@.nosp@m.icm.u.nosp@m.u.se

The philosophy is as follows. The flavor of Coulomb interactions types is set using constexpr variables. This is then used to select the appropriate templated class with functions in this files through template specialization. Functions in this file take C-style arrays of SIMD of size nR registers as arguments, indicated by a suffix with the letter 'V', which are a list of registers with one for each i-particle (4xM kernels) or pair of i-particles (2xMM kernels) that have LJ interactions. Note that we do not use functions for single SIMD registers because this limits the instruction parallelism that compilers can extract.

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se

Declares and defines a templated class DiagonalMasker with a maskArray function which sets diagonal and sub-diagonal entries of a cluster-pair mask array to false when the i- and j-cluster index combination falls on the diagonal.

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se
Author
Berk Hess hess@.nosp@m.kth..nosp@m.se

There is class for no energy output which does nothing, but is useful for avoiding lots of conditionals in the kernel. The classes for a single and multiple energy groups should be used with the following call sequence:

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se

The philosophy is as follows. The different flavors of LJ interactions types and calculating energies or not are set using constexpr variables. These are then used to select the appropriate templated functions in this files through template specialization. Functions in this file take C-style arrays of SIMD of size nR registers as arguments, indicated by a suffix with the letter 'V', which are a list of registers with one for each i-particle (4xM kernels) or pair of i-particles (2xMM kernels) that have LJ interactions. This can be half the number of total registers when only part of the i-atoms have LJ. Note that we do not use functions for single SIMD registers because this limits the instruction parallelism that compilers can extract.

A specialized templated LennardJonesCalculator class is used. For each cluster pair, forceC612() or forceSigmaEpsilon() is called, depending on the combination rule. Additionaly addLennardJonesEwaldCorrections() needs to be called when using Ewald for Lennard-Jones.

Note that when atoms can get very close to each other, which we assume only happens when atoms are excluded, the masking template parameter should be set to true to avoid overflows when calculating r^-6.

Note that only plain or potential-shifted LJ interactions are supported with Lorentz-Berthelot combination rules. For switched LJ interactions choose no combination rule.

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se
Author
Teemu Murtola teemu.nosp@m..mur.nosp@m.tola@.nosp@m.gmai.nosp@m.l.com

Namespaces

 anonymous_namespace{alignedallocator.cpp}
 
 anonymous_namespace{analysismodule.cpp}
 
 anonymous_namespace{awh_history.cpp}
 
 anonymous_namespace{bench_system.cpp}
 
 anonymous_namespace{biasgrid.cpp}
 
 anonymous_namespace{biasparams.cpp}
 
 anonymous_namespace{biassharing.cpp}
 
 anonymous_namespace{biasstate.cpp}
 
 anonymous_namespace{biaswriter.cpp}
 
 anonymous_namespace{boxutilities.cpp}
 
 anonymous_namespace{clfftinitializer.cpp}
 
 anonymous_namespace{cmdlinehelpcontext.cpp}
 
 anonymous_namespace{cmdlinehelpmodule.cpp}
 
 anonymous_namespace{cmdlinehelpwriter.cpp}
 
 anonymous_namespace{cmdlineinit.cpp}
 
 anonymous_namespace{cmdlinemodulemanager.cpp}
 
 anonymous_namespace{cmdlineoptionsmodule.cpp}
 
 anonymous_namespace{cmdlineprogramcontext.cpp}
 
 anonymous_namespace{cmdlinerunner.cpp}
 
 anonymous_namespace{colvars.cpp}
 
 anonymous_namespace{colvarsMDModule.cpp}
 
 anonymous_namespace{colvarsMDModule_stub.cpp}
 
 anonymous_namespace{colvarsoptions.cpp}
 
 anonymous_namespace{com.cpp}
 
 anonymous_namespace{computeglobalselement.cpp}
 
 anonymous_namespace{convert_tpr.cpp}
 
 anonymous_namespace{coolstuff.cpp}
 
 anonymous_namespace{coordstate.cpp}
 
 anonymous_namespace{correlationgrid.cpp}
 
 anonymous_namespace{correlationtensor.cpp}
 
 anonymous_namespace{cpuinfo.cpp}
 
 anonymous_namespace{cubicsplinetable.cpp}
 
 anonymous_namespace{decidegpuusage.cpp}
 
 anonymous_namespace{densityfit.cpp}
 
 anonymous_namespace{densityfitting.cpp}
 
 anonymous_namespace{densityfittingamplitudelookup.cpp}
 
 anonymous_namespace{densityfittingforceprovider.cpp}
 
 anonymous_namespace{densityfittingoptions.cpp}
 
 anonymous_namespace{devicetransfers_ocl.cpp}
 
 anonymous_namespace{domainpaircomm.cpp}
 
 anonymous_namespace{dump.cpp}
 
 anonymous_namespace{electricfield.cpp}
 
 anonymous_namespace{energydata.cpp}
 
 anonymous_namespace{errorcodes.cpp}
 
 anonymous_namespace{exceptions.cpp}
 
 anonymous_namespace{exclusionblocks.cpp}
 
 anonymous_namespace{expandedensembleelement.cpp}
 
 anonymous_namespace{filenameoption.cpp}
 
 anonymous_namespace{filenameoptionmanager.cpp}
 
 anonymous_namespace{fileredirector.cpp}
 
 anonymous_namespace{filestream.cpp}
 
 anonymous_namespace{findallgputasks.cpp}
 
 anonymous_namespace{firstorderpressurecoupling.cpp}
 
 anonymous_namespace{freeenergydispatch.cpp}
 
 anonymous_namespace{freeenergyparameters.cpp}
 
 anonymous_namespace{freeenergyperturbationdata.cpp}
 
 anonymous_namespace{futil.cpp}
 
 anonymous_namespace{gausstransform.cpp}
 
 anonymous_namespace{gmx_covar.cpp}
 
 anonymous_namespace{gpu_3dfft_heffte.cpp}
 
 anonymous_namespace{gpu_3dfft_hip_rocfft.cpp}
 
 anonymous_namespace{gpu_3dfft_hip_vkfft.cpp}
 
 anonymous_namespace{gpu_3dfft_ocl_vkfft.cpp}
 
 anonymous_namespace{gpu_3dfft_sycl_rocfft.cpp}
 
 anonymous_namespace{gpu_3dfft_sycl_vkfft.cpp}
 
 anonymous_namespace{grid.cpp}
 
 anonymous_namespace{haloexchange.cpp}
 
 anonymous_namespace{haloexchangesetup.cpp}
 
 anonymous_namespace{handlerestart.cpp}
 
 anonymous_namespace{hardwaretopology.cpp}
 
 anonymous_namespace{helpwritercontext.cpp}
 
 anonymous_namespace{histogram.cpp}
 
 anonymous_namespace{histogramsize.cpp}
 
 anonymous_namespace{identifyavx512fmaunits.cpp}
 
 anonymous_namespace{ikeyvaluetreeerror.cpp}
 
 anonymous_namespace{init.cpp}
 
 anonymous_namespace{inmemoryserializer.cpp}
 
 anonymous_namespace{insert_molecules.cpp}
 
 anonymous_namespace{keyvaluetree.cpp}
 
 anonymous_namespace{keyvaluetreeserializer.cpp}
 
 anonymous_namespace{keyvaluetreetransform.cpp}
 
 anonymous_namespace{logger.cpp}
 
 anonymous_namespace{modules.cpp}
 
 anonymous_namespace{mpiinfo.cpp}
 
 anonymous_namespace{mrcdensitymap.cpp}
 
 anonymous_namespace{mrcdensitymapheader.cpp}
 
 anonymous_namespace{mrcserializer.cpp}
 
 anonymous_namespace{mttk.cpp}
 
 anonymous_namespace{multipletimestepping.cpp}
 
 anonymous_namespace{nbnxm_hip_data_mgmt.cpp}
 
 anonymous_namespace{nbsearch.cpp}
 
 anonymous_namespace{neldermead.cpp}
 
 anonymous_namespace{nnpot.cpp}
 
 anonymous_namespace{nonbonded_bench.cpp}
 
 anonymous_namespace{nosehooverchains.cpp}
 
 anonymous_namespace{optionsection.cpp}
 
 anonymous_namespace{optionsvisitor.cpp}
 
 anonymous_namespace{pargs.cpp}
 
 anonymous_namespace{parrinellorahmanbarostat.cpp}
 
 anonymous_namespace{pdb2gmx.cpp}
 
 anonymous_namespace{plumedMDModule.cpp}
 
 anonymous_namespace{plumedMDModule_stub.cpp}
 
 anonymous_namespace{plumedOptions.cpp}
 
 anonymous_namespace{pointstate.cpp}
 
 anonymous_namespace{poscalc.cpp}
 
 anonymous_namespace{programcontext.cpp}
 
 anonymous_namespace{propagator.cpp}
 
 anonymous_namespace{pullelement.cpp}
 
 anonymous_namespace{qmmm.cpp}
 
 anonymous_namespace{qmmmforceprovider.cpp}
 
 anonymous_namespace{qmmmoptions.cpp}
 
 anonymous_namespace{quadraticsplinetable.cpp}
 
 anonymous_namespace{read_params.cpp}
 
 anonymous_namespace{report_methods.cpp}
 
 anonymous_namespace{reportgpuusage.cpp}
 
 anonymous_namespace{rocfft_common_utils.cpp}
 
 anonymous_namespace{rstparser.cpp}
 
 anonymous_namespace{selectioncollection.cpp}
 
 anonymous_namespace{selhelp.cpp}
 
 anonymous_namespace{shellcompletions.cpp}
 
 anonymous_namespace{simd_energy_accumulator.cpp}
 
 anonymous_namespace{simd_kernel.h}
 
 anonymous_namespace{statepropagatordata.cpp}
 
 anonymous_namespace{stringutil.cpp}
 
 anonymous_namespace{taskassignment.cpp}
 
 anonymous_namespace{threaded_force_buffer.cpp}
 
 anonymous_namespace{timeunitmanager.cpp}
 
 anonymous_namespace{topologyinformation.cpp}
 
 anonymous_namespace{tpi.cpp}
 
 anonymous_namespace{transformationcoordinate.cpp}
 
 anonymous_namespace{treesupport.cpp}
 
 anonymous_namespace{velocityscalingtemperaturecoupling.cpp}
 
 compat
 Compatibility aliases for standard library features.
 
 detail
 
 internal
 Internal GROMACS namespace.
 
 test
 Testing utilities namespace.
 

Classes

class  AnalysisDataModuleManager
 Encapsulates handling of data modules attached to AbstractAnalysisData. More...
 
class  AnalysisDataProxy
 Internal implementation class used to implement column modules. More...
 
class  AnalysisDataStorageFrame
 Allows assigning values for a data frame in AnalysisDataStorage. More...
 
class  AnalysisDataStorage
 Helper class that implements storage of data. More...
 
class  ArrayRef
 STL-like interface to a C array of T (or part of a std container of T). More...
 
class  AnalysisDataFrameLocalDataSetHandle
 Handle to a single data set within frame-local data array. More...
 
class  AnalysisDataFrameLocalDataHandle
 Handle to a single frame data within frame-local data array. More...
 
class  AnalysisDataFrameLocalData
 Container for an array of frame-local values that supports parallel data processing. More...
 
class  AnalysisDataFrameAverager
 Helper class for modules that average values over frames. More...
 
class  AnalysisDataParallelOptions
 Parallelization options for analysis data objects. More...
 
struct  BiasCoupledToSystem
 A bias and its coupling to the system. More...
 
class  Awh
 Coupling of the accelerated weight histogram method (AWH) with the system. More...
 
class  Bias
 A bias acting on a multidimensional coordinate. More...
 
class  GridAxis
 An axis, i.e. dimension, of the grid. More...
 
struct  GridPoint
 A point in the grid. More...
 
class  BiasGrid
 The grid for a single bias, generally multidimensional and periodic. More...
 
class  BiasParams
 Constant parameters for the bias. More...
 
class  BiasState
 The state of a bias. More...
 
class  AwhEnergyBlock
 AWH output data block that can be written to an energy file block. More...
 
class  BiasWriter
 Class organizing the output data storing and writing of an AWH bias. More...
 
class  CoordState
 Keeps track of the current coordinate value, grid index and umbrella location. More...
 
class  CorrelationGrid
 BiasGrid of local correlation tensors. More...
 
class  CorrelationBlockData
 Correlation block averaging weight-only data. More...
 
class  CorrelationTensor
 Correlation data for computing the correlation tensor of one grid point. More...
 
struct  DimParams
 Constant parameters for each dimension of the coordinate. More...
 
class  HistogramSize
 Tracks global size related properties of the bias histogram. More...
 
class  PointState
 The state of a coordinate point. More...
 
class  ColvarProxyGromacs
 Implements a GROMACS version of colvarproxy. This class hold for the communication between colvars and GROMACS. 2 child class will inherit from this one: one during pre processing (ColvarsPreProcessor) and one during the simulation (ColvarsForceProvider). Most of the work needed for the communication will be implemented in this class. More...
 
struct  ColvarsForceProviderState
 Parameters defining the internal colvars force provider state. More...
 
class  ColvarsForceProvider
 Implements IForceProvider for colvars. Override the ColvarProxyGromacs generic class for the communication. More...
 
struct  ColvarsModuleInfo
 Information about the colvars module. More...
 
class  ColvarsOptions
 Input data storage for colvars. More...
 
class  ColvarsPreProcessor
 Class that read a colvars configuration file during pre-processing and retrieve the colvars atoms coordinates to be stored in tpr KVT. More...
 
class  ColvarsSimulationsParameters
 Collect colvars parameters only available during simulation setup. More...
 
struct  DensityFittingModuleInfo
 Information about the density fitting module. More...
 
class  DensityFittingAmplitudeLookup
 Class that translates atom properties into amplitudes. More...
 
struct  DensityFittingForceProviderState
 Parameters defining the internal density fitting force provider state. More...
 
class  DensityFittingForceProvider
 Implements IForceProvider for density-fitting forces. More...
 
class  DensityFittingOptions
 Input data storage for density fitting. More...
 
class  DensityFittingOutputProvider
 Handle file output for density guided simulations. More...
 
struct  DensityFittingParameters
 Holding all directly user-provided parameters for density fitting. More...
 
struct  NNPotModuleInfo
 Information about the NNPot module. More...
 
class  NNPotForceProvider
 
class  INNPotModel
 NNPot Module. More...
 
struct  NNPotParameters
 
class  NNPotTopologyPreprocessor
 Class responsible for all modifications of the topology during input pre-processing. More...
 
class  TorchModel
 Class responsible for loading and evaluating a TorchScript-compiled neural network model. Inherits from NNPotModel. More...
 
class  PlumedForceProvider
 Implements IForceProvider for PLUMED. More...
 
struct  PlumedModuleInfo
 Information about the PLUMED module. More...
 
struct  QMMMModuleInfo
 Information about the QM/MM module. More...
 
class  QMMMForceProvider
 Implements IForceProvider for QM/MM. More...
 
class  QMMMInputGenerator
 Class that takes QMMMParameters, Coordinates, Point charges, Box dimensions, pbcType. Generates QM/MM sample input parameters and pdb-style coordinates for CP2K. Input are generated as std::string objects which can be stored in tpr KVT and/or flushed into the files. More...
 
class  QMMMOptions
 Input data storage for QM/MM. More...
 
struct  QMMMTopologyInfo
 Contains various information about topology modifications Used for statistics during topology pre-processing within QMMMTopologyPreprocessor class. More...
 
class  QMMMTopologyPreprocessor
 Class implementing gmx_mtop_t QMMM modifications during preprocessing 1) Split QM-containing molecules from other molecules in blocks 2) Nullify charges on all virtual sites consisting of QM only atoms 3) Nullifies charges on all QM atoms 4) Excludes LJ interactions between QM atoms 5) Builds vector with atomic numbers of all atoms 6) Makes F_CONNBOND between atoms within QM region 7) Removes angles and settles containing 2 or more QM atoms 8) Removes dihedrals containing 3 or more QM atoms 9) Builds vector containing pairs of bonded QM - MM atoms (Link frontier) More...
 
struct  LinkFrontier
 Helper structure with indexes of broken bonds between QM and MM Used to determine and store pair of QM and MM atoms between which chemical bond is broken. More...
 
struct  QMMMParameters
 Holding all parameters needed for QM/MM simulation. Also used for setting all default parameter values. More...
 
class  CommandLineHelpContext
 Context information for writing out command-line help. More...
 
class  GlobalCommandLineHelpContext
 Helper for passing CommandLineHelpContext into parse_common_args(). More...
 
class  CommandLineHelpModule
 Command-line module for producing help. More...
 
class  CommandLineHelpWriter
 Writes help information for Options. More...
 
class  CommandLineModuleSettings
 Settings to pass information between a module and the general runner. More...
 
class  ICommandLineModule
 Module that can be run from command line using CommandLineModuleManager. More...
 
class  CommandLineModuleManager
 Implements a wrapper command-line interface for multiple modules. More...
 
class  CommandLineModuleGroup
 Handle to add content to a group added with CommandLineModuleManager::addModuleGroup(). More...
 
class  CommandLineModuleGroupData
 Internal data for a CommandLineModuleManager module group. More...
 
class  CommandLineCommonOptionsHolder
 Encapsulates some handling of common options to the wrapper binary. More...
 
class  ICommandLineOptionsModuleSettings
 Settings to pass information between a CommandLineOptionsModule and generic code that runs it. More...
 
class  ICommandLineOptionsModule
 Module that can be run from a command line and uses gmx::Options for argument processing. More...
 
class  CommandLineParser
 Implements command-line parsing for Options objects. More...
 
class  IExecutableEnvironment
 Allows customization of the way various directories are found by CommandLineProgramContext. More...
 
class  CommandLineProgramContext
 Program context implementation for command line programs. More...
 
class  TrajectoryFileOpener
 Low level method to take care of only file opening and closing. More...
 
class  TrajectoryFrameWriter
 Writes coordinate frames to a sink, e.g. a trajectory file. More...
 
class  ProcessFrameConversion
 ProcessFrameConversion class for handling the running of several analysis steps. More...
 
class  IFrameConverter
 IFrameConverter interface for manipulating coordinate information. More...
 
class  IOutputAdapter
 OutputAdapter class for handling trajectory file flag setting and processing. More...
 
class  OutputAdapterContainer
 Storage for output adapters that modify the state of a t_trxframe object. More...
 
class  OutputSelector
 OutputSelector class controls setting which coordinates are actually written. More...
 
class  SetAtoms
 SetAtoms class controls availability of atoms data. More...
 
class  SetBox
 Allows changing box information when writing a coordinate file. More...
 
class  SetForces
 SetForces class allows changing writing of forces to file. More...
 
class  SetPrecision
 SetPrecision class allows changing file writing precision. More...
 
class  SetStartTime
 SetStartTime class allows changing trajectory time information. More...
 
class  SetTimeStep
 SetTimeStep class allows changing trajectory time information. More...
 
class  SetVelocities
 SetVelocities class allows changing writing of velocities to file. More...
 
class  OutputRequirementOptionDirector
 Container for the user input values that will be used by the builder to determine which OutputAdapters should/could/will be registered to the coordinate file writer. More...
 
struct  OutputRequirements
 Finalized version of requirements after processing. More...
 
class  DomainDecompositionBuilder
 Builds a domain decomposition management object. More...
 
class  DomainCommBackward
 Setup for selecting halo atoms to be sent and sending coordinates to another domain. More...
 
class  DomainCommForward
 Setup for receiving halo coordinates from another domain and sending halo forces. More...
 
class  DomainPairComm
 Setup for communication between pairs of domains, both backward and forward along the DD grid. More...
 
class  FixedCapacityVector
 Vector that behaves likes std::vector but has fixed capacity. More...
 
class  HashedMap
 Unordered key to value mapping. More...
 
struct  gmx_domdec_zone_size_t
 Triclinic corners and the Cartesian bounding box. More...
 
class  DomdecZones
 Class for handling atom ranges and dimensions of domain decomposition zones. More...
 
class  GpuHaloExchange
 Manages GPU Halo Exchange object. More...
 
struct  nvshmemHaloExchangeOps
 Struct encapsulating data for NVSHMEM Enabled GPU Halo Exchange. More...
 
struct  HaloMpiRequests
 Storage for MPI request for halo MPI receive and send operations. More...
 
class  HaloExchange
 Handles the halo communication of coordinates and forces. More...
 
class  LocalAtomSet
 A local atom set collects local, global and collective indices of the home atoms on a rank. The indices of the home atoms are automatically updated during domain decomposition, thus gmx::LocalAtomSet::localIndex enables iteration over local atoms properties like coordinates or forces. TODO: add a LocalAtomSet iterator. More...
 
class  LocalAtomSetManager
 Hands out handles to local atom set indices and triggers index recalculation for all sets upon domain decomposition if run in parallel. More...
 
class  LocalTopologyChecker
 Has responsibility for checking that the local topology distributed across domains describes a total number of bonded interactions that matches the system topology. More...
 
struct  DomdecOptions
 Structure containing all (command line) options for the domain decomposition. More...
 
class  EnergyAnalysisFrame
 Class describing an energy frame, that is the all the data stored for one energy term at one time step in an energy file. More...
 
class  EnergyTerm
 Class describing the whole time series of an energy term. More...
 
struct  EnergyNameUnit
 Convenience structure for keeping energy name and unit together. More...
 
class  IEnergyAnalysis
 Interface class overloaded by the separate energy modules. More...
 
class  SeparatePmeRanksPermitted
 Class for managing usage of separate PME-only ranks. More...
 
struct  PpCommManager
 Object to manage communications with a specific PP rank. More...
 
class  PmeForceSenderGpu
 Manages sending forces from PME-only ranks to their PP ranks. More...
 
struct  CacheLineAlignedFlag
 Class with interfaces and data for CUDA version of PME Force sending functionality. More...
 
struct  PpForceCommManager
 Object to manage communications with a specific PP rank. More...
 
class  PmePpCommGpu
 Manages communication related to GPU buffers between this PME rank and its PP rank. More...
 
class  Gpu3dFft
 A 3D FFT class for performing R2C/C2R transforms. More...
 
class  RocfftInitializer
 Provides RAII-style initialization of rocFFT library. More...
 
struct  RocfftPlan
 All the persistent data for planning an executing a 3D FFT. More...
 
struct  PlanSetupData
 Helper struct to reduce repetitive code setting up a 3D FFT plan. More...
 
struct  MDModulesCheckpointReadingDataOnMain
 Provides the MDModules with the checkpointed data on the main rank. More...
 
struct  MDModulesCheckpointReadingBroadcast
 Provides the MDModules with the communication record to broadcast. More...
 
struct  MDModulesWriteCheckpointData
 Writing the MDModules data to a checkpoint file. More...
 
class  FileIOXdrSerializer
 Serializer to read/write XDR data. More...
 
class  H5md
 Manager of an H5MD filehandle. The class is designed to read/write data according to de Buyl et al., 2014 (https://doi.org/10.1016/j.cpc.2014.01.018) and https://www.nongnu.org/h5md/h5md.html. More...
 
class  MrcDensityMapOfFloatReader
 Read an mrc/ccp4 file that contains float values. More...
 
class  MrcDensityMapOfFloatFromFileReader
 Read an mrc density map from a given file. More...
 
class  MrcDensityMapOfFloatWriter
 Write an mrc/ccp4 file that contains float values. More...
 
struct  MrcDataStatistics
 Statistics about mrc data arrays. More...
 
struct  MrcDensitySkewData
 Skew matrix and translation. As named in "EMDB Map Distribution Format Description Version 1.01 (c) emdatabank.org 2014". More...
 
struct  CrystallographicLabels
 Crystallographic labels for mrc data. More...
 
struct  MrcDensityMapHeader
 A container for the data in mrc density map file formats. More...
 
class  ArrayRefWithPadding
 Interface to a C array of T (or part of a std container of T), that includes padding that is suitable for the kinds of SIMD operations GROMACS uses. More...
 
class  ListOfLists
 A list of lists, optimized for performance. More...
 
class  ClfftInitializer
 Handle clFFT library init and tear down in RAII style also with mutual exclusion. More...
 
class  DeviceStreamManager
 Device stream and context manager. More...
 
class  HostAllocationPolicy
 Policy class for configuring gmx::Allocator, to manage allocations of memory that may be needed for e.g. GPU transfers. More...
 
struct  OpenClTraits
 Stub for OpenCL type traits. More...
 
struct  OpenClTraitsBase
 Implements common trait infrastructure for OpenCL types. More...
 
struct  OpenClTraits< cl_context >
 Implements traits for cl_context. More...
 
struct  OpenClTraits< cl_command_queue >
 Implements traits for cl_command_queue. More...
 
struct  OpenClTraits< cl_program >
 Implements traits for cl_program. More...
 
struct  OpenClTraits< cl_kernel >
 Implements traits for cl_kernel. More...
 
class  ClHandle
 Wrapper of OpenCL type cl_type to implement RAII. More...
 
class  CpuInfo
 Detect CPU capabilities and basic logical processor info. More...
 
struct  DeviceDetectionResult
 Convenience macro to help us avoid ifdefs each time we use sysconf. More...
 
class  HardwareTopology
 Information about packages, cores, processing units, numa, caches. More...
 
struct  IMDEnergyBlock
 IMD (interactive molecular dynamics) energy record. More...
 
struct  IMDHeader
 IMD (interactive molecular dynamics) communication structure. More...
 
class  InteractiveMolecularDynamics
 Implement interactive molecular dynamics. More...
 
struct  IMDSocket
 IMD (interactive molecular dynamics) socket structure. More...
 
struct  EnumerationArray
 Wrapper for a C-style array with size and indexing defined by an enum. Useful for declaring arrays of enum names for debug or other printing. An ArrayRef<DataType> may be constructed from an object of this type. More...
 
struct  HostInteractionList
 Version of InteractionList that supports pinning. More...
 
class  TranslateAndScale
 Transform coordinates in three dimensions by first translating, then scaling them. More...
 
class  AffineTransformation
 Affine transformation of three-dimensional coordinates. More...
 
class  DensitySimilarityMeasure
 Measure similarity and gradient between densities. More...
 
class  DensityFittingForce
 Manages evaluation of density-fitting forces for particles that were spread with a kernel. More...
 
struct  ExponentialMovingAverageState
 Store the state of exponential moving averages. More...
 
class  ExponentialMovingAverage
 Evaluate the exponential moving average with bias correction. More...
 
class  GaussianOn1DLattice
 Provide result of Gaussian function evaluation on a one-dimensional lattice. More...
 
struct  GaussianSpreadKernelParameters
 Parameters for density spreading kernels. More...
 
class  GaussTransform3D
 Sums Gaussian values at three dimensional lattice coordinates. The Gaussian is defined as $A \frac{1}{\sigma^3 \sqrt(2^3\pi^3)} * \exp(-\frac{(x-x0)^2}{2 \sigma^2})$. More...
 
class  IntegerBox
 A 3-orthotope over integer intervals. More...
 
class  OuterProductEvaluator
 Evaluate the outer product of two number ranges. Keeps the memory for the outer product allocated. More...
 
class  MultiDimArray
 Multidimensional array that manages its own memory. More...
 
struct  RealFunctionvalueAtCoordinate
 Tie together coordinate and function value at this coordinate. More...
 
class  NelderMeadSimplex
 The simplex for the Nelder-Mead algorithm. More...
 
struct  OptimisationResult
 Compiles results of an a function optimisation. More...
 
class  PaddedVector
 PaddedVector is a container of elements in contiguous storage that allocates extra memory for safe SIMD-style loads for operations used in GROMACS. More...
 
class  CheckpointHandler
 Class handling the checkpoint signal. More...
 
class  Constraints
 Handles constraints. More...
 
class  EnergyDriftTracker
 Class for tracking and printing the drift in the conserved energy quantity. More...
 
struct  PTCouplingArrays
 Arrays connected to Pressure and Temperature coupling. More...
 
class  GpuForceReduction
 Manages the force reduction directly in GPU memory. More...
 
struct  cellInfo
 structure to hold cell information for any nbat-format forces More...
 
class  Lincs
 Data for LINCS algorithm. More...
 
struct  LincsDeviations
 Status information about how well LINCS satisfied the constraints in this domain. More...
 
struct  AtomPair
 A pair of atoms indexes. More...
 
class  LincsGpu
 Class with interfaces and data for GPU version of LINCS. More...
 
class  MDAtoms
 Contains a C-style t_mdatoms while managing some of its memory with C++ vectors with allocators. More...
 
class  ResetHandler
 Class handling the reset of counters. More...
 
class  SettleData
 Data for executing SETTLE constraining. More...
 
class  SettleGpu
 Class with interfaces and data for GPU version of SETTLE. More...
 
struct  shakedata
 Working data for the SHAKE algorithm. More...
 
struct  DipoleData
 Data structure to hold dipole-related data and staging arrays. More...
 
class  SimulationSignal
 POD-style object used by mdrun ranks to set and receive signals within and between simulations. More...
 
class  SimulationSignaller
 Object used by mdrun ranks to signal to each other at this step. More...
 
class  StopHandler
 Class handling the stop signal. More...
 
class  StopConditionSignal
 Class setting the stop signal based on gmx_get_stop_condition() More...
 
class  StopConditionTime
 Class setting the stop signal based on maximal run time. More...
 
class  StopHandlerBuilder
 Class preparing the creation of a StopHandler. More...
 
class  Update
 Contains data for update phase. More...
 
struct  ScalingMatrix
 Scaling matrix struct. More...
 
struct  AtomIndexExtremes
 Struct for returning an atom range. More...
 
class  UpdateGroups
 Owns the update grouping and related data. More...
 
class  Range
 Defines a range of integer numbers and accompanying operations. More...
 
class  UpdateGroupsCog
 Class for managing and computing centers of geometry of update groups. More...
 
struct  DomainInfo
 Information on PBC and domain decomposition for virtual sites. More...
 
struct  AtomIndex
 List of atom indices belonging to a task. More...
 
struct  InterdependentTask
 Data structure for thread tasks that use constructing atoms outside their own atom range. More...
 
struct  VsiteThread
 Vsite thread task data structure. More...
 
class  ThreadingInfo
 Information on how the virtual site work is divided over thread tasks. More...
 
class  VirtualSitesHandler
 Class that handles construction of vsites and spreading of vsite forces. More...
 
class  WholeMoleculeTransform
 This class manages a coordinate buffer with molecules not split over periodic boundary conditions for use in force calculations which require whole molecules. More...
 
class  ISimulator
 The Simulator interface. More...
 
class  LegacySimulatorData
 The legacy simulator data. More...
 
class  LegacyMdrunOptions
 This class provides the same command-line option functionality to both CLI and API sessions. More...
 
class  LegacySimulator
 Struct to handle setting up and running the different simulation types. More...
 
class  MDModules
 Manages the collection of all modules used for mdrun. More...
 
class  MembedHolder
 Membed SimulatorBuilder parameter type. More...
 
class  Mdrunner
 Runner object for supporting setup and execution of mdrun. More...
 
class  MdrunnerBuilder
 Build a gmx::Mdrunner. More...
 
class  SimulationContext
 Simulation environment and configuration. More...
 
class  SimulationInputHandle
 Owning handle to a SimulationInput object. More...
 
struct  SimulatorConfig
 Simulation configuation settings. More...
 
struct  SimulatorStateData
 Data for a specific simulation state. More...
 
class  SimulatorEnv
 Collection of environmental information for a simulation. More...
 
class  Profiling
 Collection of profiling information. More...
 
class  ConstraintsParam
 Collection of constraint parameters. More...
 
class  LegacyInput
 Collection of legacy input information. More...
 
class  InteractiveMD
 SimulatorBuilder parameter type for InteractiveMD. More...
 
class  IonSwapping
 Parameter type for IonSwapping SimulatorBuilder component. More...
 
class  TopologyData
 Collection of handles to topology information. More...
 
class  BoxDeformationHandle
 Handle to information about the box. More...
 
class  SimulatorBuilder
 Class preparing the creation of Simulator objects. More...
 
class  TestParticleInsertion
 Class for performing test particle insertions into trajectory frames. More...
 
class  MDModulesNotifier
 Organizes notifications about an event of interest to modules. More...
 
struct  BuildMDModulesNotifier
 Aide to avoid nested MDModulesNotifier definition. More...
 
struct  BuildMDModulesNotifier<>
 Template specialization to end parameter unpacking recursion. More...
 
struct  BuildMDModulesNotifier< CurrentCallParameter, CallParameter...>
 Template specialization to assemble MDModulesNotifier. More...
 
struct  MDModulesAtomsRedistributedSignal
 Notification that atoms may have been redistributed. More...
 
struct  MDModulesEnergyOutputToDensityFittingRequestChecker
 Check if module outputs energy to a specific field. More...
 
struct  MDModulesEnergyOutputToQMMMRequestChecker
 Check if QMMM module outputs energy to a specific field. More...
 
class  EnergyCalculationFrequencyErrors
 Collect errors for the energy calculation frequency. More...
 
struct  SimulationTimeStep
 Provides the simulation time step in ps. More...
 
struct  CoordinatesAndBoxPreprocessed
 Provides coordinates and simulation box. More...
 
struct  MdRunInputFilename
 Mdrun input filename. More...
 
struct  EdrOutputFilename
 Energy trajectory output filename from Mdrun. More...
 
struct  QMInputFileName
 Notification for QM program input filename provided by user as command-line argument for grompp. More...
 
struct  PlumedInputFilename
 Notification for the optianal plumed input filename provided by user as command-line argument for mdrun. More...
 
struct  EnsembleTemperature
 Provides the constant ensemble temperature. More...
 
struct  MDModulesNotifiers
 Group of notifers to organize that MDModules can receive callbacks they subscribe to. More...
 
class  accessor_basic
 The most basic memory access model for mdspan. More...
 
class  extents
 Multidimensional extents with static and dynamic dimensions. More...
 
class  layout_right
 Right-aligned array layout indexer. Carries the mapping class performing the translation from multidimensional index to one-dimensional number. More...
 
class  basic_mdspan
 Multidimensional array indexing and memory access with flexible mapping and access model. More...
 
struct  AtomInfoWithinMoleculeBlock
 Contains information about each atom in a molecule block of the global topology. More...
 
class  CheckpointData
 } More...
 
class  AwhParams
 Structure holding parameter information for AWH. More...
 
struct  IsSerializableType
 Struct allowing to check if data is serializable through the KeyValueTree serializer. More...
 
struct  IsSerializableEnum
 Struct allowing to check if enum has a serializable underlying type. More...
 
class  ReadCheckpointDataHolder
 Holder for read checkpoint data. More...
 
class  WriteCheckpointDataHolder
 Holder for write checkpoint data. More...
 
class  ForceBuffersView
 A view of the force buffer. More...
 
class  ForceBuffers
 Object that holds the force buffers. More...
 
class  ForceWithShiftForces
 Container for force and virial for algorithms that compute shift forces for virial calculation. More...
 
class  ForceWithVirial
 Container for force and virial for algorithms that provide their own virial tensor contribution. More...
 
class  ForceOutputs
 Force and virial output buffers for use in force computation. More...
 
class  ForceProviderInput
 Helper struct that bundles data for passing it over to the force providers. More...
 
class  ForceProviderOutput
 Helper struct bundling the output data of a force provider. More...
 
class  IForceProvider
 Interface for a component that provides forces during MD. More...
 
class  ForceProviders
 Evaluates forces from a collection of gmx::IForceProvider. More...
 
class  IMDModule
 Extension module for GROMACS simulations. More...
 
class  IMDOutputProvider
 Interface for handling additional output files during a simulation. More...
 
class  IMdpOptionProvider
 Interface for handling mdp/tpr input to a mdrun module. More...
 
struct  CheckpointOptions
 Options for writing checkpoint files. More...
 
struct  TimingOptions
 Options for timing (parts of) mdrun. More...
 
struct  ImdOptions
 Options for IMD. More...
 
struct  MdrunOptions
 Collection of all options of mdrun that are not processed separately. More...
 
struct  MtsLevel
 Setting for a single level for multiple time step integration. More...
 
struct  GromppMtsOpts
 Struct for passing the MTS mdp options to setupMtsLevels() More...
 
class  ObservablesReducerBuilder
 Builder for ObservablesReducer. More...
 
class  ObservablesReducer
 Manage reduction of observables for registered subscribers. More...
 
class  StepWorkload
 Describes work done on this domain by the current rank that may change per-step. More...
 
class  DomainLifetimeWorkload
 Describes work done on this domain on every step of its lifetime, but which might change after the next domain partitioning. More...
 
class  SimulationWorkload
 Manage what computation is required during the simulation. More...
 
struct  NvshmemPpCommData
 Struct of comm data for NVSHMEM Enabled PP Halo Exchange. More...
 
class  ThreadForceBuffer
 Object that holds force and energies buffers plus a mask for a thread. More...
 
class  ThreadedForceBuffer
 Class for accumulating and reducing forces and energies on threads in parallel. More...
 
class  MimicCommunicator
 Class-wrapper around MiMiC communication library It uses GROMACS' unit conversion to switch from GROMACS' units to a.u. More...
 
class  AndersenTemperatureCoupling
 Element implementing the Andersen thermostat. More...
 
class  CheckpointHelper
 Checkpoint helper. More...
 
class  CheckpointHelperBuilder
 Builder for the checkpoint helper. More...
 
class  CompositeSimulatorElement
 Composite simulator element. More...
 
class  ComputeGlobalsElement
 Encapsulate the calls to compute_globals More...
 
class  ConstraintsElement
 Constraints element. More...
 
class  DomDecHelper
 Infrastructure element responsible for domain decomposition. More...
 
class  DomDecHelperBuilder
 Builder for DomDecHelper. More...
 
class  EnergyData
 Data class managing energies. More...
 
class  ExpandedEnsembleElement
 The expanded ensemble element. More...
 
class  FirstOrderPressureCoupling
 Element performing first-order pressure coupling. More...
 
class  ForceElement
 Force element. More...
 
class  FreeEnergyPerturbationData
 The free energy perturbation data. More...
 
class  FepStateSetting
 Allows external clients to specify how to change the FEP state. More...
 
class  ModularSimulator
 The modular simulator. More...
 
class  SignallerBuilder
 Builder for signallers. More...
 
class  ISimulatorElement
 The general interface for elements of the modular simulator. More...
 
class  ISignaller
 The general Signaller interface. More...
 
class  INeighborSearchSignallerClient
 Interface for clients of the NeighborSearchSignaller. More...
 
class  ILastStepSignallerClient
 Interface for clients of the LastStepSignaller. More...
 
class  ILoggingSignallerClient
 Interface for clients of the LoggingSignaller. More...
 
class  IEnergySignallerClient
 Interface for clients of the EnergySignaller. More...
 
class  ITrajectorySignallerClient
 Interface for signaller clients of the TrajectoryElement. More...
 
class  ITrajectoryWriterClient
 Interface for writer clients of the TrajectoryElement. More...
 
class  ITopologyHolderClient
 Client requiring read access to the local topology. More...
 
class  ICheckpointHelperClient
 Client that needs to store data during checkpointing. More...
 
class  ElementNotFoundError
 Exception class signalling that a requested element was not found. More...
 
class  MissingElementConnectionError
 Exception class signalling that elements were not connected properly. More...
 
class  SimulationAlgorithmSetupError
 Exception class signalling that the ModularSimulatorAlgorithm was set up in an incompatible way. More...
 
class  CheckpointError
 Exception class signalling an error in reading or writing modular checkpoints. More...
 
struct  PropagatorTag
 Strong type used to name propagators. More...
 
struct  TimeStep
 Strong type used to denote propagation time steps. More...
 
struct  Offset
 Strong type used to denote scheduling offsets. More...
 
struct  PropagatorConnection
 Information needed to connect a propagator to a temperature and / or pressure coupling element. More...
 
class  IDomDecHelperClient
 Client interface of the DomDecHelper class. More...
 
struct  MttkPropagatorConnectionDetails
 Struct collecting the propagator tags and offsets used by the MTTK pressure coupling. More...
 
class  MttkData
 Class holding the extra dof and parameters used by the MTTK algorithm. More...
 
class  MttkPropagatorConnection
 Object holding the callbacks and scaling views for the connection of MTTKElement objects to propagators. More...
 
class  MttkElement
 Element propagating the MTTK degree of freedom. More...
 
class  MttkBoxScaling
 This element scales the box based on the MTTK dof. More...
 
class  NoseHooverGroup
 The current state of the Nose-Hoover chain degree of freedom for a temperature group. More...
 
class  NoseHooverChainsData
 Class holding data used by the Nose-Hoover chains. More...
 
class  NoseHooverChainsElement
 Element propagating the Nose-Hoover chains. More...
 
class  ParrinelloRahmanBarostat
 Element implementing the Parrinello-Rahman barostat. More...
 
class  PmeLoadBalanceHelper
 Infrastructure element responsible for PME load balancing. More...
 
class  Propagator
 Propagator element. More...
 
class  PullElement
 Element calling pull functionality. More...
 
class  ReferenceTemperatureManager
 Object managing reference temperature changes. More...
 
class  NeighborSearchSignaller
 Element signalling a neighbor search step. More...
 
class  LastStepSignaller
 Element signalling the last step. More...
 
class  LoggingSignaller
 Element signalling a logging step. More...
 
class  TrajectorySignaller
 Element signalling trajectory writing. More...
 
class  EnergySignaller
 Element signalling energy related special steps. More...
 
class  ModularSimulatorAlgorithm
 The modular simulator. More...
 
class  GlobalCommunicationHelper
 Helper container with data connected to global communication. More...
 
class  ModularSimulatorAlgorithmBuilderHelper
 Helper for element addition. More...
 
class  ModularSimulatorAlgorithmBuilder
 Builder for ModularSimulatorAlgorithm objects. More...
 
class  StatePropagatorData
 StatePropagatorData and associated data. More...
 
class  TopologyHolder
 Object holding the topology. More...
 
class  TrajectoryElement
 Trajectory element signals and handles trajectory writing. More...
 
class  TrajectoryElementBuilder
 Build the TrajectoryElement More...
 
struct  TemperatureCouplingData
 Data used by the concrete temperature coupling implementations. More...
 
class  ITemperatureCouplingImpl
 Interface for temperature coupling implementations. More...
 
class  VRescaleTemperatureCoupling
 Implements v-rescale temperature coupling. More...
 
class  BerendsenTemperatureCoupling
 Implements Berendsen temperature coupling. More...
 
class  NoseHooverTemperatureCoupling
 Implements the Nose-Hoover temperature coupling. More...
 
class  VelocityScalingTemperatureCoupling
 Element implementing the a velocity-scaling thermostat. More...
 
class  EnergyAccumulator
 Base energy accumulator class, only specializations are used. More...
 
struct  nbnxn_atomdata_output_t
 Struct that holds force and energy output buffers. More...
 
struct  nbnxn_atomdata_t
 Struct that stores atom related data for the nbnxn module. More...
 
struct  NbnxmKernelBenchOptions
 The options for the kernel benchmarks. More...
 
struct  BenchmarkSystem
 Description of the system used for benchmarking. More...
 
struct  BoundingBox
 Bounding box for a nbnxm atom cluster. More...
 
struct  NbnxmGpu
 Main data structure for CUDA nonbonded force calculations. More...
 
class  FreeEnergyDispatch
 Temporary data and methods for handling dispatching of the nbnxm free-energy kernels. More...
 
struct  NBStagingData
 Staging area for temporary data downloaded from the GPU. More...
 
struct  NBAtomDataGpu
 Nonbonded atom data - both inputs and outputs. More...
 
struct  NBParamGpu
 Parameters required for the GPU nonbonded calculations. More...
 
struct  GpuTimers
 GPU region timers used for timing GPU kernels and H2D/D2H transfers. More...
 
class  GpuPairlistSorting
 Sorted pair list on GPU and data required for performing the sorting. More...
 
class  GpuPairlist
 GPU pair list structure. More...
 
struct  EnergyFunctionProperties
 Set of boolean constants mimicking preprocessor macros. More...
 
struct  BoundingBox1D
 Bounding box for one dimension of a grid cell. More...
 
struct  GridDimensions
 The physical dimensions of a grid. More...
 
class  Grid
 A pair-search grid object for one domain decomposition zone. More...
 
class  GridSet
 Holds a set of search grids for the local + non-local DD zones. More...
 
struct  GridSetData
 Struct that holds grid data that is shared over all grids. More...
 
struct  GridWork
 Working arrays for constructing a grid. More...
 
struct  nonbonded_verlet_t
 Top-level non-bonded data structure for the Verlet-type cut-off scheme. More...
 
struct  cl_nbparam_params
 Data structure shared between the OpenCL device code and OpenCL host code. More...
 
struct  gmx_cache_protect_t
 Cache-line protection buffer. More...
 
struct  nbnxn_cj_t
 This is the actual cluster-pair list j-entry. More...
 
class  JClusterList
 Simple j-cluster list. More...
 
struct  nbnxn_ci_t
 Simple pair-list i-unit. More...
 
struct  nbnxn_sci_t
 Grouped pair-list i-unit. More...
 
struct  nbnxn_im_ei_t
 Interaction data for a j-group for one warp. More...
 
struct  nbnxn_cj_packed_t
 Packed j-cluster list element. More...
 
class  PackedJClusterList
 Packed j-cluster list. More...
 
struct  nbnxn_excl_t
 Struct for storing the atom-pair interaction bits for a cluster pair in a GPU pairlist. More...
 
struct  NbnxnPairlistCpu
 Cluster pairlist type for use on CPUs. More...
 
struct  CalcVerletBufferParameters
 Struct with references for most parameters for calling calcVerletBufferSize() More...
 
struct  PairlistParams
 The setup for generating and pruning the nbnxn pair list. More...
 
class  PairlistSet
 An object that holds the local or non-local pairlists. More...
 
class  PairlistSets
 Contains sets of pairlists. More...
 
struct  NbnxmPairlistCpuWork
 Working data for the actual i-supercell during pair search. More...
 
class  nbnxn_cycle_t
 Local cycle count struct for profiling. More...
 
struct  SearchCycleCounting
 Struct for collecting detailed cycle counts for the search. More...
 
struct  PairsearchWork
 Thread-local work struct, contains working data for Grid. More...
 
class  PairSearch
 Main pair-search struct, contains the grid(s), not the pair-list(s) More...
 
class  CoulombCalculator
 Base Coulomb calculator class, only specializations are used. More...
 
class  CoulombCalculator< KernelCoulombType::RF >
 Specialized calculator for RF. More...
 
class  CoulombCalculator< KernelCoulombType::EwaldAnalytical >
 Specialized calculator for Ewald using an analytic approximation. More...
 
class  CoulombCalculator< KernelCoulombType::EwaldTabulated >
 Specialized calculator for Ewald using tabulated functions. More...
 
class  DiagonalMasker
 Base Coulomb calculator class, only specializations are used. More...
 
class  DiagonalMasker< nR, kernelLayout, KernelLayoutClusterRatio::JSizeEqualsISize >
 Specialized masker for JSizeEqualsISize. More...
 
class  DiagonalMasker< nR, kernelLayout, KernelLayoutClusterRatio::JSizeIsDoubleISize >
 Specialized masker for JSizeIsDoubleISize. More...
 
class  DiagonalMasker< nR, kernelLayout, KernelLayoutClusterRatio::JSizeIsHalfISize >
 Specialized masker for JSizeIsHalfISize. More...
 
class  EnergyAccumulator< useEnergyGroups, false >
 Specialized energy accumulator class for no energy calculation. More...
 
class  EnergyAccumulator< false, true >
 Specialized energy accumulator class for energy accumulation without energy groups. More...
 
class  EnergyAccumulator< true, true >
 Specialized energy accumulator class for energy accumulation with energy groups. More...
 
class  EnergyGroupsPerCluster
 Holds energy group indices for use in EnergyAccumulator<true, true> More...
 
class  LennardJonesCalculator
 Base LJ calculator class, only specializations are used. More...
 
class  LennardJonesCalculator< false, InteractionModifiers::PotShift >
 Specialized calculator for LJ with potential shift and no energy calculation. More...
 
class  LennardJonesCalculator< true, InteractionModifiers::PotShift >
 Specialized calculator for LJ with potential shift and energy calculation. More...
 
class  LennardJonesCalculator< calculateEnergies, InteractionModifiers::ForceSwitch >
 Specialized calculator for LJ with force switch. More...
 
class  LennardJonesCalculator< calculateEnergies, InteractionModifiers::PotSwitch >
 Specialized calculator for LJ with potential switch. More...
 
class  ExclusivePrefixSum
 SYCL kernel name. More...
 
class  NbnxmKernel
 Class name for NBNXM kernel. More...
 
class  NbnxmKernelPruneOnly
 Class name for NBNXM prune-only kernel. More...
 
class  TextTableFormatter
 Formats rows of a table for text output. More...
 
class  HelpManager
 Helper for providing interactive online help. More...
 
class  AbstractSimpleHelpTopic
 Abstract base class for help topics that have simple text and no subtopics. More...
 
class  AbstractCompositeHelpTopic
 Abstract base class for help topics that have simple text and subtopics. More...
 
class  SimpleHelpTopic
 Template for simple implementation of AbstractSimpleHelpTopic. More...
 
class  CompositeHelpTopic
 Template for simple implementation of AbstractCompositeHelpTopic. More...
 
class  HelpLinks
 Hyperlink data for writing out help. More...
 
class  HelpWriterContext
 Context information for writing out help. More...
 
class  IHelpTopic
 Provides a single online help topic. More...
 
class  RstParagraphIterator
 Iterator over reStructuredText paragraphs. More...
 
class  AbstractOptionStorage
 Abstract base class for converting, validating, and storing option values. More...
 
class  AbstractOptionSection
 Base class for specifying option section properties. More...
 
class  AbstractOptionSectionHandle
 Base class for handles to option sections. More...
 
class  BooleanOptionStorage
 Converts, validates, and stores boolean values. More...
 
class  IntegerOptionStorage
 Converts, validates, and stores integer values. More...
 
class  Int64OptionStorage
 Converts, validates, and stores integer values. More...
 
class  DoubleOptionStorage
 Converts, validates, and stores floating-point (double) values. More...
 
class  FloatOptionStorage
 Converts, validates, and stores floating-point (float) values. More...
 
class  StringOptionStorage
 Converts, validates, and stores string values. More...
 
class  EnumOptionStorage
 Converts, validates, and stores enum values. More...
 
class  OptionsBehaviorCollection
 Container for IOptionsBehavior objects. More...
 
class  FileNameOptionStorage
 Converts, validates, and stores file names. More...
 
class  IOptionSectionStorage
 Provides behavior specific to a certain option section type. More...
 
class  OptionManagerContainer
 Container to keep managers added with Options::addManager() and pass them to options. More...
 
class  OptionsAssigner
 Decorator class for assigning values to Options. More...
 
class  OptionSection
 Declares a simple option section. More...
 
class  OptionSectionHandle
 Allows adding options to an OptionSection. More...
 
class  OptionStorageTemplate
 Templated base class for constructing option value storage classes. More...
 
class  OptionStorageTemplateSimple
 Simplified option storage template for options that have one-to-one value conversion. More...
 
class  OptionsVisitor
 Pure interface for visiting options in a Options object. More...
 
class  OptionsTypeVisitor
 Abstract base class for visiting options of a particular type. More...
 
class  OptionsIterator
 Decorator class for visiting options in a Options object. More...
 
class  OptionsModifyingVisitor
 Pure interface for visiting options in a Options object, allowing modifications. More...
 
class  OptionsModifyingTypeVisitor
 Abstract base class for visiting options of a particular type, allowing modifications. More...
 
class  OptionsModifyingIterator
 Decorator class for visiting options in a Options object, allowing changes. More...
 
class  RepeatingOptionSectionHandle
 Allows adding options to an RepeatingOptionSection. More...
 
class  RepeatingOptionSectionStorage
 Implements handling of the structures that stores per-section values. More...
 
class  RepeatingOptionSection
 Declares an option section that creates a structure for each instance. More...
 
class  OptionValueConverterSimple
 Helper for converting from Any to a given type. More...
 
class  OptionValueStoreNull
 Value storage that does not store anywhere. More...
 
class  PullCoordExpressionParser
 Class with a mathematical expression and parser. More...
 
class  ExponentialDistribution
 Exponential distribution. More...
 
class  GammaDistribution
 Gamma distribution. More...
 
class  NormalDistribution
 Normal distribution. More...
 
class  TabulatedNormalDistribution
 Tabulated normal random distribution. More...
 
class  ThreeFry2x64General
 General implementation class for ThreeFry counter-based random engines. More...
 
class  ThreeFry2x64
 ThreeFry2x64 random engine with 20 iteractions. More...
 
class  ThreeFry2x64Fast
 ThreeFry2x64 random engine with 13 iteractions. More...
 
class  UniformIntDistribution
 Uniform integer distribution. More...
 
class  UniformRealDistribution
 Uniform real distribution. More...
 
class  RestraintManager
 Manage the Restraint potentials available for Molecular Dynamics. More...
 
class  RestraintMDModule
 MDModule wrapper for Restraint implementations. More...
 
class  Site
 Abstraction for a restraint interaction site. More...
 
class  RestraintForceProvider
 Provide IForceProvider for RestraintMDModuleImpl. More...
 
class  RestraintMDModuleImpl
 IMDModule implementation for RestraintMDModule. More...
 
class  SelectionParserValue
 Describes a parsed value, possibly resulting from expression evaluation. More...
 
class  SelectionParserParameter
 Describes a parsed method parameter. More...
 
class  PositionCalculationCollection
 Collection of gmx_ana_poscalc_t structures for the same topology. More...
 
class  SelectionEvaluator
 Implements selection evaluation. More...
 
class  SelectionFileOption
 Specifies a special option that provides selections from a file. More...
 
class  SelectionFileOptionInfo
 Wrapper class for accessing and modifying selection file option information. More...
 
class  SelectionFileOptionStorage
 Implementation for a special option for reading selections from files. More...
 
class  SelectionOptionStorage
 Converts, validates, and stores selection values. More...
 
struct  SelectionLocation
 Stores the location of a selection element in the selection text. More...
 
class  SelectionTreeElement
 Represents an element of a selection expression. More...
 
struct  SelMethodEvalContext
 Evaluation context for selection methods. More...
 
class  SelectionParserSymbol
 Single symbol for the selection parser. More...
 
class  SelectionParserSymbolIterator
 Forward iterator for iterating symbols of a given type. More...
 
class  SelectionParserSymbolTable
 Symbol table for the selection parser. More...
 
class  Simd4Double
 SIMD4 double type. More...
 
class  Simd4DBool
 SIMD4 variable type to use for logical comparisons on doubles. More...
 
class  Simd4Float
 SIMD4 float type. More...
 
class  Simd4FBool
 SIMD4 variable type to use for logical comparisons on floats. More...
 
class  SimdDouble
 Double SIMD variable. Available if GMX_SIMD_HAVE_DOUBLE is 1. More...
 
class  SimdDInt32
 Integer SIMD variable type to use for conversions to/from double. More...
 
class  SimdDBool
 Boolean type for double SIMD data. More...
 
class  SimdDIBool
 Boolean type for integer datatypes corresponding to double SIMD. More...
 
class  SimdFloat
 Float SIMD variable. Available if GMX_SIMD_HAVE_FLOAT is 1. More...
 
class  SimdFInt32
 Integer SIMD variable type to use for conversions to/from float. More...
 
class  SimdFBool
 Boolean type for float SIMD data. More...
 
class  SimdFIBool
 Boolean type for integer datatypes corresponding to float SIMD. More...
 
struct  SimdFloatTag
 Tag type to select to load SimdFloat with simdLoad(U) More...
 
struct  SimdDoubleTag
 Tag type to select to load SimdDouble with simdLoad(U) More...
 
struct  SimdFInt32Tag
 Tag type to select to load SimdFInt32 with simdLoad(U) More...
 
struct  SimdDInt32Tag
 Tag type to select to load SimdDInt32 with simdLoad(U) More...
 
struct  AlignedArray< float, N >
 Identical to std::array with GMX_SIMD_FLOAT_WIDTH alignment. Should not be deleted through base pointer (destructor is non-virtual). More...
 
struct  AlignedArray< double, N >
 Identical to std::array with GMX_SIMD_DOUBLE_WIDTH alignment. Should not be deleted through base pointer (destructor is non-virtual). More...
 
class  SimdSetZeroProxy
 Proxy object to enable setZero() for SIMD and real types. More...
 
class  SwapCoordinates
 Implement Computational Electrophysiology swapping. More...
 
class  CubicSplineTable
 Cubic spline interpolation table. More...
 
class  QuadraticSplineTable
 Quadratic spline interpolation table. More...
 
struct  AnalyticalSplineTableInput
 Specification for analytical table function (name, function, derivative) More...
 
struct  NumericalSplineTableInput
 Specification for vector table function (name, function, derivative, spacing) More...
 
struct  DevelopmentFeatureFlags
 Structure that holds boolean flags corresponding to the development features present enabled through environment variables. More...
 
struct  GpuTaskMapping
 Specifies the GPU deviceID_ available for task_ to use. More...
 
class  GpuTaskAssignmentsBuilder
 Builder for the GpuTaskAssignments for all ranks on this node. More...
 
class  GpuTaskAssignments
 Contains the GPU task assignment for all ranks on this physical node. More...
 
class  ConvertTprInfo
 Declares gmx convert-tpr. More...
 
struct  ExclusionBlock
 Describes exclusions for a single atom. More...
 
class  EnergyFrame
 Contains the content of an .edr frame read by an EnergyFrameReader. More...
 
class  SansDebye
 Derrived class for computing SANS scattering. More...
 
struct  pairHash
 Hash function to allow use of pair in unordered_map. More...
 
class  SaxsDebye
 Derrived class for computing neutron scattering. More...
 
struct  PairDistValue
 structure to store pair dist units More...
 
class  ComputeDebyeScattering
 Base class for computing SANS and SAXS using Debye Method. More...
 
struct  CromerMannParameters
 Cromer-Mann scattering factor parameters to compute structure factor dependent on Q. More...
 
struct  AtomicStructureFactor
 Neutron scattering factor parameters for an atom type. More...
 
class  SurfaceAreaCalculator
 Computes surface areas for a group of atoms/spheres. More...
 
class  UnionFinder
 Union-find data structure for keeping track of disjoint sets. More...
 
class  MappedUnionFinder
 Extension of UnionFind that supports non-consecutive integer indices as items. More...
 
class  TrajectoryAnalysisRunnerCommon
 Implements common trajectory analysis runner functionality. More...
 
class  AlignedAllocationPolicy
 Policy class for configuring gmx::Allocator, to manage allocations of aligned memory for SIMD code. More...
 
class  PageAlignedAllocationPolicy
 Policy class for configuring gmx::Allocator, to manage allocations of page-aligned memory that can be locked for asynchronous transfer to GPU devices. More...
 
class  Allocator
 Policy-based memory allocator. More...
 
class  Any
 Represents a dynamically typed value of an arbitrary type - deprecated. More...
 
class  BinaryInformationSettings
 Settings for printBinaryInformation(). More...
 
struct  BoolType
 A clone of a bool as a workaround on the template specialization of std::vector<bool> that is incompatible with ArrayRef. More...
 
class  DataFileOptions
 Search parameters for DataFileFinder. More...
 
struct  DataFileInfo
 Information about a data file found by DataFileFinder::enumerateFiles(). More...
 
class  DataFileFinder
 Searches data files from a set of paths. More...
 
class  DefaultInitializationAllocator
 Allocator adaptor that interposes construct() calls to convert value initialization into default initialization. More...
 
class  DirectoryEnumerator
 Lists files in a directory. More...
 
class  IFileInputRedirector
 Allows overriding file existence checks from code that supports it. More...
 
class  IFileOutputRedirector
 Allows capturing stdout and file output from code that supports it. More...
 
class  StandardInputStream
 Text input stream implementation for reading from stdin. More...
 
class  TextInputFile
 Text input stream implementation for reading from a file. More...
 
class  TextOutputFile
 Text output stream implementation for writing to a file. More...
 
class  ISerializer
 Interface for types that convert standard data types into a form suitable for storage or transfer. More...
 
class  KeyValueTreePath
 Identifies an entry in a key-value tree. More...
 
class  KeyValueTreeBuilder
 Root builder for creating trees that have an object at the root. More...
 
class  KeyValueTreeValueBuilder
 Builder for KeyValueTreeValue objects. More...
 
class  KeyValueTreeUniformArrayBuilder
 Builder for KeyValueTreeArray objects where all elements are of type T. More...
 
class  KeyValueTreeObjectArrayBuilder
 Builder for KeyValueTreeArray objects where all elements are KeyValueTreeObject objects. More...
 
class  KeyValueTreeObjectBuilder
 Builder for KeyValueTreeObject objects. More...
 
class  IKeyValueTreeTransformRules
 Interface to declare rules for transforming key-value trees. More...
 
class  KeyValueTreeTransformRulesScoped
 Helper object returned from IKeyValueTreeTransformRules::scopedTransform(). More...
 
class  KeyValueTreeTransformRuleBuilder
 Provides methods to specify one transformation rule. More...
 
class  ILogTarget
 Target where log output can be written. More...
 
class  LogEntryWriter
 Helper class for creating log entries with GMX_LOG. More...
 
class  LogWriteHelper
 Helper class for implementing GMX_LOG. More...
 
class  LogLevelHelper
 Represents a single logging level. More...
 
class  MDLogger
 Declares a logging interface. More...
 
class  LoggerBuilder
 Initializes loggers. More...
 
class  LoggerOwner
 Manages memory for a logger built with LoggerBuilder. More...
 
class  MessageStringCollector
 Helper class for collecting message strings, optionally with context. More...
 
class  MessageStringContext
 Convenience class for creating a message context. More...
 
class  PhysicalNodeCommunicator
 Holds a communicator for the physical node of this rank. More...
 
class  StringCompare
 Compare object for std::string STL containers and algorithms that supports run-time decision on how to compare. More...
 
class  StringOutputStream
 Text output stream implementation for writing to an in-memory string. More...
 
class  StringInputStream
 Helper class to convert static string data to a stream. More...
 
class  StringToEnumValueConverter
 A class to convert a string to an enum value of type EnumType. More...
 
class  TextReader
 Reads text from a TextInputStream. More...
 
class  TextInputStream
 Interface for reading text. More...
 
class  TextOutputStream
 Interface for writing text. More...
 
class  TextWriter
 Writes text into a TextOutputStream. More...
 
struct  isIntegralConstant
 Is true if type is a std::integral_constant. More...
 
struct  no_delete
 Deleter for std::shared_ptr that does nothing. More...
 
class  NonbondedBenchmarkInfo
 Declares gmx nonbonded-bench. More...
 
class  BasicVector
 C++ class for 3D vectors. More...
 
class  AbstractAnalysisData
 Abstract base class for all objects that provide data. More...
 
class  AnalysisData
 Parallelizable data container for raw data. More...
 
class  AnalysisDataHandle
 Handle for inserting data into AnalysisData. More...
 
class  AbstractAnalysisArrayData
 Abstract base class for data objects that present in-memory data. More...
 
class  AnalysisArrayData
 Simple in-memory data array. More...
 
class  AnalysisDataValue
 Value type for representing a single value in analysis data objects. More...
 
class  AnalysisDataFrameHeader
 Value type for storing frame-level information for analysis data. More...
 
class  AnalysisDataPointSetRef
 Value type wrapper for non-mutable access to a set of data column values. More...
 
class  AnalysisDataFrameRef
 Value type wrapper for non-mutable access to a data frame. More...
 
class  IAnalysisDataModule
 Interface for a module that gets notified whenever data is added. More...
 
class  AnalysisDataModuleSerial
 Convenience base class for serial analysis data modules. More...
 
class  AnalysisDataModuleParallel
 Convenience base class for parallel analysis data modules. More...
 
class  AnalysisDataAverageModule
 Data module for independently averaging each column in input data. More...
 
class  AnalysisDataFrameAverageModule
 Data module for averaging of columns for each frame. More...
 
class  AnalysisDataDisplacementModule
 Data module for calculating displacements. More...
 
class  AnalysisHistogramSettingsInitializer
 Provides "named parameter" idiom for constructing histograms. More...
 
class  AnalysisHistogramSettings
 Contains parameters that specify histogram bin locations. More...
 
class  AbstractAverageHistogram
 Base class for representing histograms averaged over frames. More...
 
class  AnalysisDataSimpleHistogramModule
 Data module for per-frame histograms. More...
 
class  AnalysisDataWeightedHistogramModule
 Data module for per-frame weighted histograms. More...
 
class  AnalysisDataBinAverageModule
 Data module for bin averages. More...
 
class  AnalysisDataLifetimeModule
 Data module for computing lifetime histograms for columns in input data. More...
 
class  AnalysisDataPlotSettings
 Common settings for data plots. More...
 
class  AbstractPlotModule
 Abstract data module for writing data into a file. More...
 
class  AnalysisDataPlotModule
 Plotting module for straightforward plotting of data. More...
 
class  AnalysisDataVectorPlotModule
 Plotting module specifically for data consisting of vectors. More...
 
struct  StaticLog2
 Evaluate log2(n) for integer n statically at compile time. More...
 
struct  StaticLog2< 1 >
 Specialization of StaticLog2<n> for n==1. More...
 
struct  StaticLog2< 0 >
 Specialization of StaticLog2<n> for n==0. More...
 
class  AbstractOption
 Abstract base class for specifying option properties. More...
 
class  OptionTemplate
 Templated base class for constructing concrete option settings classes. More...
 
class  OptionInfo
 Gives information and allows modifications to an option after creation. More...
 
class  BooleanOption
 Specifies an option that provides boolean values. More...
 
class  IntegerOption
 Specifies an option that provides integer values. More...
 
class  Int64Option
 Specifies an option that provides 64-bit integer values. More...
 
class  DoubleOption
 Specifies an option that provides floating-point (double) values. More...
 
class  FloatOption
 Specifies an option that provides floating-point (float) values. More...
 
class  StringOption
 Specifies an option that provides string values. More...
 
class  EnumOption
 Specifies an option that accepts an EnumerationArray of string values and writes the selected index into an enum variable. More...
 
class  LegacyEnumOption
 Specifies an option that accepts enumerated string values and writes the selected index into an enum variable. More...
 
class  BooleanOptionInfo
 Wrapper class for accessing boolean option information. More...
 
class  IntegerOptionInfo
 Wrapper class for accessing integer option information. More...
 
class  Int64OptionInfo
 Wrapper class for accessing 64-bit integer option information. More...
 
class  DoubleOptionInfo
 Wrapper class for accessing floating-point option information. More...
 
class  FloatOptionInfo
 Wrapper class for accessing floating-point option information. More...
 
class  StringOptionInfo
 Wrapper class for accessing string option information. More...
 
class  EnumOptionInfo
 Wrapper class for accessing enum option information. More...
 
class  FileNameOption
 Specifies an option that provides file names. More...
 
class  FileNameOptionInfo
 Wrapper class for accessing file name option information. More...
 
class  FileNameOptionManager
 Handles interaction of file name options with global options. More...
 
class  IOptionsBehavior
 Interface to provide extension points for options parsing. More...
 
class  IOptionsContainer
 Interface for adding input options. More...
 
class  IOptionsContainerWithSections
 Interface for adding input options with sections. More...
 
class  IOptionValueStore
 Represents the final storage location of option values. More...
 
class  IOptionManager
 Base class for option managers. More...
 
class  Options
 Collection of options. More...
 
class  TimeUnitManager
 Provides common functionality for time unit conversions. More...
 
class  TimeUnitBehavior
 Options behavior to add a time unit option. More...
 
class  PotentialPointData
 Structure to hold the results of IRestraintPotential::evaluate(). More...
 
class  IRestraintPotential
 Interface for Restraint potentials. More...
 
class  IndexGroupsAndNames
 Bundle index groups with their names. More...
 
class  AnalysisNeighborhoodPositions
 Input positions for neighborhood searching. More...
 
class  AnalysisNeighborhood
 Neighborhood searching for analysis tools. More...
 
class  AnalysisNeighborhoodPair
 Value type to represent a pair of positions found in neighborhood searching. More...
 
class  AnalysisNeighborhoodSearch
 Initialized neighborhood search with a fixed set of reference positions. More...
 
class  AnalysisNeighborhoodPairSearch
 Initialized neighborhood pair search with a fixed set of positions. More...
 
class  Selection
 Provides access to a single selection. More...
 
class  SelectionPosition
 Provides access to information about a single selected position. More...
 
class  SelectionCollection
 Collection of selections. More...
 
struct  SelectionTopologyProperties
 Describes topology properties required for selection evaluation. More...
 
class  SelectionOption
 Specifies an option that provides selection(s). More...
 
class  SelectionOptionInfo
 Wrapper class for accessing and modifying selection option information. More...
 
class  ITopologyProvider
 Provides topology information to SelectionOptionBehavior. More...
 
class  SelectionOptionBehavior
 Options behavior to allow using SelectionOptions. More...
 
class  SelectionOptionManager
 Handles interaction of selection options with other options and user input. More...
 
class  RangePartitioning
 Division of a range of indices into consecutive blocks. More...
 
class  TrajectoryFrame
 Contains a valid trajectory frame. More...
 
class  TrajectoryAnalysisModuleData
 Base class for thread-local data storage during trajectory analysis. More...
 
class  TrajectoryAnalysisModule
 Base class for trajectory analysis modules. More...
 
class  TrajectoryAnalysisSettings
 Trajectory analysis module configuration object. More...
 
class  TrajectoryAnalysisCommandLineRunner
 Runner for command-line trajectory analysis tools. More...
 
class  TopologyInformation
 Topology information available to a trajectory analysis module. More...
 
class  EnumerationIterator
 Allows iterating sequential enumerators. More...
 
class  EnumerationWrapper
 Allows constructing iterators for looping over sequential enumerators. More...
 
class  EnumClassSuitsEnumerationArray
 Helper class to determine whether a template type that is an enum class has a Count field. More...
 
class  ExceptionInfo
 Stores additional context information for exceptions. More...
 
struct  ThrowLocation
 Stores the location from which an exception was thrown. More...
 
class  ExceptionInitializer
 Provides information for Gromacs exception constructors. More...
 
class  GromacsException
 Base class for all exception objects in Gromacs. More...
 
class  FileIOError
 Exception class for file I/O errors. More...
 
class  UserInputError
 Exception class for user input errors. More...
 
class  InvalidInputError
 Exception class for situations where user input cannot be parsed/understood. More...
 
class  InconsistentInputError
 Exception class for situations where user input is inconsistent. More...
 
class  ToleranceError
 Exception class when a specified tolerance cannot be achieved. More...
 
class  SimulationInstabilityError
 Exception class for simulation instabilities. More...
 
class  InternalError
 Exception class for internal errors. More...
 
class  APIError
 Exception class for incorrect use of an API. More...
 
class  RangeError
 Exception class for out-of-range values or indices. More...
 
class  NotImplementedError
 Exception class for use of an unimplemented feature. More...
 
class  ParallelConsistencyError
 Exception class for use when ensuring that MPI ranks to throw in a coordinated fashion. More...
 
class  ModularSimulatorError
 Exception class for modular simulator. More...
 
class  FlagsTemplate
 Template class for typesafe handling of combination of flags. More...
 
struct  InstallationPrefixInfo
 Provides information about installation prefix (see IProgramContext::installationPrefix()). More...
 
class  IProgramContext
 Provides context information about the program that is calling the library. More...
 
class  StringFormatter
 Function object that wraps a call to formatString() that expects a single conversion argument, for use with algorithms. More...
 
class  IdentityFormatter
 Function object to implement the same interface as StringFormatter to use with strings that should not be formatted further. More...
 
class  EqualCaseInsensitive
 Function object for comparisons with equalCaseInsensitive. More...
 
class  TextLineWrapperSettings
 Stores settings for line wrapping. More...
 
class  TextLineWrapper
 Wraps lines to a predefined length. More...
 
struct  CompileTimeStringJoin
 Combines string literals at compile time to final string. More...
 
struct  functor_wrapper
 wrap function into functor to be used as deleter More...
 

Typedefs

typedef double awh_dvec [c_biasMaxNumDim]
 A real vector in AWH coordinate space.
 
typedef int awh_ivec [c_biasMaxNumDim]
 An integer vector in AWH coordinate space.
 
typedef int force_env_t
 Type for CP2K force environment handle.
 
typedef std::unique_ptr
< ICommandLineModule
CommandLineModulePointer
 Smart pointer type for managing a ICommandLineModule.
 
typedef std::map< std::string,
CommandLineModulePointer
CommandLineModuleMap
 Container type for mapping module names to module objects.
 
typedef std::unique_ptr
< CommandLineModuleGroupData
CommandLineModuleGroupDataPointer
 Smart pointer type for managing a CommandLineModuleGroup.
 
typedef std::vector
< CommandLineModuleGroupDataPointer
CommandLineModuleGroupList
 Container type for keeping a list of module groups.
 
typedef std::unique_ptr
< ICommandLineOptionsModule
ICommandLineOptionsModulePointer
 Smart pointer to manage an ICommandLineOptionsModule.
 
typedef std::unique_ptr
< IExecutableEnvironment
ExecutableEnvironmentPointer
 Shorthand for a smart pointer to IExecutableEnvironment.
 
using TrajectoryFrameWriterPointer = std::unique_ptr< TrajectoryFrameWriter >
 Smart pointer to manage the TrajectoryFrameWriter object.
 
using ProcessFrameConversionPointer = std::unique_ptr< ProcessFrameConversion >
 Smart pointer to manage the analyse object.
 
using FrameConverterPointer = std::unique_ptr< IFrameConverter >
 Typedef to have direct access to the individual FrameConverter modules.
 
using OutputAdapterPointer = std::unique_ptr< IOutputAdapter >
 Smart pointer to manage the frame adapter object.
 
using OutputSelectorPointer = std::unique_ptr< OutputSelector >
 Smart pointer to manage the object.
 
using SetAtomsPointer = std::unique_ptr< SetAtoms >
 Smart pointer to manage the object.
 
using SetBoxPointer = std::unique_ptr< SetBox >
 Smart pointer to manage the object.
 
using SetForcesPointer = std::unique_ptr< SetForces >
 Smart pointer to manage the object.
 
using SetPrecisionPointer = std::unique_ptr< SetPrecision >
 Smart pointer to manage the outputselector object.
 
using SetStartTimePointer = std::unique_ptr< SetStartTime >
 Smart pointer to manage the object.
 
using SetTimeStepPointer = std::unique_ptr< SetTimeStep >
 Smart pointer to manage the object.
 
using SetVelocitiesPointer = std::unique_ptr< SetVelocities >
 Smart pointer to manage the object.
 
using EnergyAnalysisFrameIterator = std::vector< EnergyAnalysisFrame >::const_iterator
 Typedef for looping over EnergyFrame.
 
using IEnergyAnalysisPointer = std::unique_ptr< IEnergyAnalysis >
 Pointer to the EnergyAnalysisModule classes.
 
typedef struct
gmx::CacheLineAlignedFlag 
CacheLineAlignedFlag
 Class with interfaces and data for CUDA version of PME Force sending functionality. More...
 
typedef int64_t hid_t
 
typedef int herr_t
 
template<class T >
using HostAllocator = Allocator< T, HostAllocationPolicy >
 Memory allocator that uses HostAllocationPolicy. More...
 
template<class T >
using HostVector = std::vector< T, HostAllocator< T >>
 Convenience alias for std::vector that uses HostAllocator.
 
template<class T >
using PaddedHostVector = PaddedVector< T, HostAllocator< T >>
 Convenience alias for PaddedVector that uses HostAllocator.
 
template<typename T >
using AlignedVector = std::vector< T, AlignedAllocator< T >>
 Convenience type for vector with aligned memory.
 
using mode = sycl::access_mode
 
template<class ElementType >
using BasicMatrix3x3 = MultiDimArray< std::array< ElementType, 3 *3 >, extents< 3, 3 >>
 Three-by-three matrix of ElementType. More...
 
using Matrix3x3 = BasicMatrix3x3< real >
 Three-by-three real number matrix. More...
 
using Matrix3x3Span = Matrix3x3::view_type
 Convenience alias for a matrix view.
 
using Matrix3x3ConstSpan = Matrix3x3::const_view_type
 Convenience alias for a const matrix view.
 
typedef std::array
< SimulationSignal, eglsNR > 
SimulationSignals
 Convenience typedef for the group of signals used.
 
using VirialHandling = VirtualSitesHandler::VirialHandling
 VirialHandling is often used outside VirtualSitesHandler class members.
 
typedef std::array
< std::vector< int >
, c_ftypeVsiteEnd-c_ftypeVsiteStart
VsitePbc
 Type for storing PBC atom information for all vsite types in the system.
 
using SimulatorFunctionType ) = void(
 Function type for simulator code.
 
using LogFilePtr = std::unique_ptr< t_fileio, functor_wrapper< t_fileio, closeLogFile >>
 Simple guard pointer See unique_cptr for details.
 
using dynamicExtents2D = extents< dynamic_extent, dynamic_extent >
 Convenience type for often-used two dimensional extents.
 
using dynamicExtents3D = extents< dynamic_extent, dynamic_extent, dynamic_extent >
 Convenience type for often-used three dimensional extents.
 
template<class T , ptrdiff_t... Indices>
using mdspan = basic_mdspan< T, extents< Indices...>, layout_right, accessor_basic< T >>
 basic_mdspan with wrapped indices, basic_accessor policiy and right-aligned memory layout.
 
using ReadCheckpointData = CheckpointData< CheckpointDataOperation::Read >
 Convenience shortcut for reading checkpoint data.
 
using WriteCheckpointData = CheckpointData< CheckpointDataOperation::Write >
 Convenience shortcut for writing checkpoint data.
 
using Step = int64_t
 Step number.
 
typedef std::function< void()> CheckBondedInteractionsCallback
 The function type allowing to request a check of the number of bonded interactions.
 
using EnergyContribution = std::function< real(Step, Time)>
 Function type for elements contributing energy.
 
using Time = double
 Simulation time.
 
typedef std::function< void()> SimulatorRunFunction
 The function type that can be scheduled to be run during the simulator run.
 
typedef std::function< void(SimulatorRunFunction)> RegisterRunFunction
 The function type that allows to register run functions.
 
typedef std::function< void(Step,
Time, const
RegisterRunFunction &)> 
SchedulingFunction
 The function type scheduling run functions for a step / time using a RegisterRunFunction reference.
 
typedef std::function< void(Step,
Time)> 
SignallerCallback
 The function type that can be registered to signallers for callback.
 
typedef std::function< void(gmx_mdoutf
*, Step, Time, bool, bool)> 
ITrajectoryWriterCallback
 Function type for trajectory writing clients.
 
typedef std::function< void(Step)> PropagatorCallback
 Generic callback to the propagator.
 
typedef std::function< void()> DomDecCallback
 Callback used by the DomDecHelper object to inform clients about system re-partitioning.
 
using ReferenceTemperatureCallback = std::function< void(ArrayRef< const real >, ReferenceTemperatureChangeAlgorithm algorithm)>
 Callback updating the reference temperature.
 
using GpuPairlistByLocality = EnumerationArray< InteractionLocality, std::unique_ptr< GpuPairlist >>
 
typedef struct
gmx::cl_nbparam_params 
cl_nbparam_params_t
 Data structure shared between the OpenCL device code and OpenCL host code. More...
 
typedef SimdReal SimdBitMask
 Define SimdBitMask as a real SIMD register.
 
using FCiFloat3 = Float3
 
typedef std::unique_ptr
< AbstractCompositeHelpTopic
CompositeHelpTopicPointer
 Smart pointer type to manage a AbstractCompositeHelpTopic object.
 
typedef std::unique_ptr
< IHelpTopic
HelpTopicPointer
 Smart pointer type to manage a IHelpTopic object.
 
typedef std::shared_ptr
< IOptionsBehavior
OptionsBehaviorPointer
 Smart pointer for behaviors stored in OptionsBehaviorCollection.
 
typedef std::random_device RandomDevice
 Random device. More...
 
typedef ThreeFry2x64Fast DefaultRandomEngine
 Default fast and accurate random engine in Gromacs. More...
 
typedef std::list
< SelectionParserValue
SelectionParserValueList
 Container for a list of SelectionParserValue objects.
 
typedef std::unique_ptr
< SelectionParserValueList
SelectionParserValueListPointer
 Smart pointer type for managing a SelectionParserValueList.
 
typedef std::list
< SelectionParserParameter
SelectionParserParameterList
 Container for a list of SelectionParserParameter objects.
 
typedef std::unique_ptr
< SelectionParserParameterList
SelectionParserParameterListPointer
 Smart pointer type for managing a SelectionParserParameterList.
 
typedef std::unique_ptr
< internal::SelectionData
SelectionDataPointer
 Smart pointer for managing an internal selection data object.
 
typedef std::vector
< SelectionDataPointer
SelectionDataList
 Container for storing a list of selections internally.
 
typedef std::shared_ptr
< SelectionTreeElement
SelectionTreeElementPointer
 Smart pointer type for selection tree element pointers.
 
typedef void(* sel_evalfunc )(struct gmx_sel_evaluate_t *data, const SelectionTreeElementPointer &sel, gmx_ana_index_t *g)
 Function pointer for evaluating a gmx::SelectionTreeElement.
 
using GpuTasksOnRanks = std::vector< std::vector< GpuTask >>
 Container of compute tasks suitable to run on a GPU e.g. on each rank of a node.
 
using GpuTaskAssignment = std::vector< GpuTaskMapping >
 Container of GPU tasks on a rank, specifying the task type and GPU device ID, e.g. potentially ready for consumption by the modules on that rank.
 
template<class T >
using AlignedAllocator = Allocator< T, AlignedAllocationPolicy >
 Aligned memory allocator. More...
 
template<class T >
using PageAlignedAllocator = Allocator< T, PageAlignedAllocationPolicy >
 PageAligned memory allocator. More...
 
template<typename T >
using FastVector = std::vector< T, DefaultInitializationAllocator< T >>
 Convenience type for vector that avoids initialization at resize()
 
using MPI_Comm_ptr = gmx::unique_cptr< MPI_Comm, MPI_Comm_free_wrapper >
 Make a smart pointer for MPI communicators.
 
typedef std::shared_ptr
< TextInputStream
TextInputStreamPointer
 Shorthand for a smart pointer to a TextInputStream.
 
typedef std::shared_ptr
< TextOutputStream
TextOutputStreamPointer
 Shorthand for a smart pointer to a TextOutputStream.
 
typedef std::shared_ptr
< IAnalysisDataModule
AnalysisDataModulePointer
 Smart pointer for managing a generic analysis data module.
 
typedef ArrayRef< const
AnalysisDataValue
AnalysisDataValuesRef
 Shorthand for reference to an array of data values.
 
typedef std::shared_ptr
< AnalysisDataAverageModule
AnalysisDataAverageModulePointer
 Smart pointer to manage an AnalysisDataAverageModule object.
 
typedef std::shared_ptr
< AnalysisDataFrameAverageModule
AnalysisDataFrameAverageModulePointer
 Smart pointer to manage an AnalysisDataFrameAverageModule object.
 
typedef std::shared_ptr
< AnalysisDataDisplacementModule
AnalysisDataDisplacementModulePointer
 Smart pointer to manage an AnalysisDataDisplacementModule object.
 
typedef std::unique_ptr
< AbstractAverageHistogram
AverageHistogramPointer
 Smart pointer to manage an AbstractAverageHistogram object.
 
typedef std::shared_ptr
< AnalysisDataSimpleHistogramModule
AnalysisDataSimpleHistogramModulePointer
 Smart pointer to manage an AnalysisDataSimpleHistogramModule object.
 
typedef std::shared_ptr
< AnalysisDataWeightedHistogramModule
AnalysisDataWeightedHistogramModulePointer
 Smart pointer to manage an AnalysisDataWeightedHistogramModule object.
 
typedef std::shared_ptr
< AnalysisDataBinAverageModule
AnalysisDataBinAverageModulePointer
 Smart pointer to manage an AnalysisDataBinAverageModule object.
 
typedef std::shared_ptr
< AnalysisDataLifetimeModule
AnalysisDataLifetimeModulePointer
 Smart pointer to manage an AnalysisDataLifetimeModule object.
 
typedef std::shared_ptr
< AnalysisDataPlotModule
AnalysisDataPlotModulePointer
 Smart pointer to manage an AnalysisDataPlotModule object.
 
typedef std::shared_ptr
< AnalysisDataVectorPlotModule
AnalysisDataVectorPlotModulePointer
 Smart pointer to manage an AnalysisDataVectorPlotModule object.
 
typedef BasicVector< realRVec
 Shorthand for C++ rvec-equivalent type.
 
typedef BasicVector< double > DVec
 Shorthand for C++ dvec-equivalent type.
 
typedef BasicVector< int > IVec
 Shorthand for C++ ivec-equivalent type.
 
typedef FloatOption RealOption
 Typedef for either DoubleOption or FloatOption, depending on precision. More...
 
typedef FloatOptionInfo RealOptionInfo
 Typedef for either DoubleOptionInfo or FloatOptionInfo, depending on precision. More...
 
typedef FlagsTemplate< OptionFlagOptionFlags
 Holds a combination of OptionFlag values.
 
using Vector = ::gmx::RVec
 Provide a vector type name with a more stable interface than RVec and a more stable implementation than vec3<>. More...
 
typedef std::vector< SelectionSelectionList
 Container of selections used in public selection interfaces.
 
typedef FlagsTemplate
< SelectionFlag
SelectionFlags
 Holds a collection of SelectionFlag values.
 
using BoxMatrix = std::array< std::array< real, DIM >, DIM >
 A 3x3 matrix data type useful for simulation boxes. More...
 
typedef std::unique_ptr
< TrajectoryAnalysisModuleData
TrajectoryAnalysisModuleDataPointer
 Smart pointer to manage a TrajectoryAnalysisModuleData object.
 
typedef std::unique_ptr
< TrajectoryAnalysisModule
TrajectoryAnalysisModulePointer
 Smart pointer to manage a TrajectoryAnalysisModule.
 
using Index = std::ptrdiff_t
 Integer type for indexing into arrays or vectors. More...
 
typedef ExceptionInfo< struct
ExceptionInfoErrno_, int > 
ExceptionInfoErrno
 Stores errno value that triggered the exception.
 
typedef ExceptionInfo< struct
ExceptionInfoApiFunc_, const
char * > 
ExceptionInfoApiFunction
 Stores the function name that returned the errno in ExceptionInfoErrno.
 
typedef ExceptionInfo< struct
ExceptionInfoLocation_,
ThrowLocation
ExceptionInfoLocation
 Stores the location where the exception was thrown.
 
using FilePtr = std::unique_ptr< FILE, functor_wrapper< FILE, fclose_wrapper >>
 Simple guard pointer which calls fclose. See unique_cptr for details.
 
template<typename T , void D = sfree_wrapper>
using unique_cptr = std::unique_ptr< T, functor_wrapper< T, D >>
 unique_ptr which takes function pointer (has to return void) as template argument
 
typedef unique_cptr< void > sfree_guard
 Simple guard which calls sfree. See unique_cptr for details.
 
using ClContext = ClHandle< cl_context >
 Convenience declarations.
 
using ClCommandQueue = ClHandle< cl_command_queue >
 
using ClProgram = ClHandle< cl_program >
 
using ClKernel = ClHandle< cl_kernel >
 

Enumerations

enum  AwhOutputEntryType {
  AwhOutputEntryType::MetaData, AwhOutputEntryType::CoordValue, AwhOutputEntryType::Pmf, AwhOutputEntryType::Bias,
  AwhOutputEntryType::Visits, AwhOutputEntryType::Weights, AwhOutputEntryType::Target, AwhOutputEntryType::SharedForceCorrelationVolume,
  AwhOutputEntryType::SharedFrictionTensor
}
 Enum with the AWH variables to write. More...
 
enum  AwhOutputMetaData { AwhOutputMetaData::NumBlock, AwhOutputMetaData::TargetError, AwhOutputMetaData::ScaledSampleWeight, AwhOutputMetaData::Count }
 Enum with the types of metadata to write. More...
 
enum  Normalization { Normalization::None, Normalization::Coordinate, Normalization::FreeEnergy, Normalization::Distribution }
 Enum with different ways of normalizing the output. More...
 
enum  DensityFittingAmplitudeMethod : int { DensityFittingAmplitudeMethod::Unity, DensityFittingAmplitudeMethod::Mass, DensityFittingAmplitudeMethod::Charge, Count }
 The methods that determine how amplitudes are spread on a grid in density guided simulations. More...
 
enum  QMMMQMMethod { QMMMQMMethod::PBE, QMMMQMMethod::BLYP, QMMMQMMethod::INPUT, Count }
 Enumerator for supported QM methods Also could be INPUT which means external input file provided with the name determined by QMMMParameters::qminputfilename_. More...
 
enum  ShellCompletionFormat { eShellCompletionFormat_Bash }
 Output format for ShellCompletionWriter. More...
 
enum  CoordinateFileFlags : unsigned long {
  CoordinateFileFlags::Base = 1 << 0, CoordinateFileFlags::RequireForceOutput = 1 << 1, CoordinateFileFlags::RequireVelocityOutput = 1 << 2, CoordinateFileFlags::RequireAtomConnections = 1 << 3,
  CoordinateFileFlags::RequireAtomInformation = 1 << 4, CoordinateFileFlags::RequireChangedOutputPrecision = 1 << 5, CoordinateFileFlags::RequireNewFrameStartTime = 1 << 6, CoordinateFileFlags::RequireNewFrameTimeStep = 1 << 7,
  CoordinateFileFlags::RequireNewBox = 1 << 8, CoordinateFileFlags::RequireCoordinateSelection = 1 << 9, CoordinateFileFlags::Count
}
 The enums here define the flags specifying the requirements of different outputadapter modules. More...
 
enum  ChangeSettingType : int { PreservedIfPresent, Always, Never, Count }
 Enum class for setting basic flags in a t_trxframe.
 
enum  ChangeAtomsType {
  PreservedIfPresent, AlwaysFromStructure, Never, Always,
  Count
}
 Enum class for t_atoms settings.
 
enum  ChangeFrameInfoType { PreservedIfPresent, Always, Count }
 Enum class for setting fields new or not.
 
enum  ChangeFrameTimeType {
  PreservedIfPresent, StartTime, TimeStep, Both,
  Count
}
 Enum class for setting frame time from user input.
 
enum  FrameConverterFlags : unsigned long {
  FrameConverterFlags::NoGuarantee = 1 << 0, FrameConverterFlags::MoleculesAreWhole = 1 << 1, FrameConverterFlags::NoPBCJumps = 1 << 2, FrameConverterFlags::MoleculeCOMInBox = 1 << 3,
  FrameConverterFlags::ResidueCOMInBox = 1 << 4, FrameConverterFlags::AtomsInBox = 1 << 5, FrameConverterFlags::UnitCellIsRectangular = 1 << 6, FrameConverterFlags::UnitCellIsTriclinic = 1 << 7,
  FrameConverterFlags::UnitCellIsCompact = 1 << 8, FrameConverterFlags::SystemIsCenteredInBox = 1 << 9, FrameConverterFlags::FitToReferenceRotTrans = 1 << 10, FrameConverterFlags::FitToReferenceRotTransXY = 1 << 11,
  FrameConverterFlags::FitToReferenceTranslation = 1 << 12, FrameConverterFlags::FitToReferenceTranslationXY = 1 << 13, FrameConverterFlags::FitToReferenceProgressive = 1 << 14, FrameConverterFlags::NewSystemCenter = 1 << 15,
  FrameConverterFlags::Count
}
 The enums here define the guarantees provided by frameconverters concerning the modifications they provide. More...
 
enum  HaloMpiTag {
  HaloMpiTag::X, HaloMpiTag::F, GridCounts, HaloMpiTag::GridColumns,
  HaloMpiTag::GridDimensions, HaloMpiTag::AtomIndices
}
 MPI tags for non-blocking x and f communication. More...
 
enum  HaloType { Coordinates, Forces }
 Whether the halo exchange is of coordinates or forces.
 
enum  DdRankOrder {
  DdRankOrder::select, DdRankOrder::interleave, DdRankOrder::pp_pme, DdRankOrder::cartesian,
  DdRankOrder::Count
}
 The options for the domain decomposition MPI task ordering. More...
 
enum  DlbOption {
  DlbOption::select, DlbOption::turnOnWhenUseful, DlbOption::no, DlbOption::yes,
  DlbOption::Count
}
 The options for the dynamic load balancing. More...
 
enum  DDBondedChecking : bool { DDBondedChecking::ExcludeZeroLimit = false, DDBondedChecking::All = true }
 Options for checking bonded interactions. More...
 
enum  DirectionX : int { Up = 0, Down, Center, Count }
 Direction of neighbouring rank in X-dimension relative to current rank. Used in GPU implementation of PME halo exchange.
 
enum  DirectionY : int { Left = 0, Right, Center, Count }
 Direction of neighbouring rank in Y-dimension relative to current rank. Used in GPU implementation of PME halo exchange.
 
enum  FftBackend {
  FftBackend::Cufft, FftBackend::OclVkfft, FftBackend::Ocl, FftBackend::CuFFTMp,
  FftBackend::HeFFTe_CUDA, FftBackend::HeFFTe_Sycl_OneMkl, FftBackend::HeFFTe_Sycl_Rocfft, FftBackend::HeFFTe_Sycl_cuFFT,
  FftBackend::SyclMkl, FftBackend::SyclOneMkl, FftBackend::SyclRocfft, FftBackend::SyclVkfft,
  FftBackend::SyclBbfft, FftBackend::Sycl, FftBackend::HipVkfft, FftBackend::HipRocfft,
  Count
}
 Enum specifying all GPU FFT backends supported by GROMACS Some of the backends support only single GPU, some only multi-node, multi-GPU. More...
 
enum  FftDirection : int { RealToComplex, ComplexToReal, Count }
 Model the kinds of 3D FFT implemented.
 
enum  H5mdFileMode : char { Read = 'r', H5mdFileMode::Write = 'w', H5mdFileMode::Append = 'a' }
 
enum  SpaceGroup : int32_t { SpaceGroup::P1 = 1 }
 Space group in three dimensions. More...
 
enum  MrcDataMode : int32_t {
  MrcDataMode::uInt8 = 0, MrcDataMode::int16 = 1, MrcDataMode::float32 = 2, MrcDataMode::complexInt32 = 3,
  MrcDataMode::complexFloat64 = 4
}
 The type of density data stored in an mrc file. As named in "EMDB Map Distribution Format Description Version 1.01 (c) emdatabank.org 2014" Modes 0-4 are defined by the standard. NOTE only mode 2 is currently implemented and used. More...
 
enum  DeviceStreamType : int {
  DeviceStreamType::NonBondedLocal, DeviceStreamType::NonBondedNonLocal, DeviceStreamType::Pme, DeviceStreamType::PmePpTransfer,
  DeviceStreamType::UpdateAndConstraints, DeviceStreamType::Count
}
 Class enum to describe the different logical streams used for GPU work. More...
 
enum  PinningPolicy : int { CannotBePinned, PinnedIfSupported }
 Helper enum for pinning policy of the allocation of HostAllocationPolicy. More...
 
enum  Architecture {
  Architecture::Unknown, Architecture::X86, Architecture::Arm, Architecture::PowerPC,
  Architecture::RiscV32, Architecture::RiscV64, Architecture::Loongarch64
}
 Enum for GROMACS CPU hardware detection support. More...
 
enum  SimdType {
  SimdType::None, SimdType::Reference, SimdType::Generic, SimdType::X86_Sse2,
  SimdType::X86_Sse4_1, SimdType::X86_Avx128Fma, SimdType::X86_Avx, SimdType::X86_Avx2,
  SimdType::X86_Avx2_128, SimdType::X86_Avx512, SimdType::X86_Avx512Knl, SimdType::Arm_NeonAsimd,
  SimdType::Arm_Sve, SimdType::Ibm_Vsx
}
 Enumerated options for SIMD architectures. More...
 
enum  IMDMessageType : int {
  IMDMessageType::Disconnect, IMDMessageType::Energies, IMDMessageType::FCoords, IMDMessageType::Go,
  IMDMessageType::Handshake, IMDMessageType::Kill, IMDMessageType::Mdcomm, IMDMessageType::Pause,
  IMDMessageType::TRate, IMDMessageType::IOerror, IMDMessageType::Count
}
 Enum for types of IMD messages. More...
 
enum  DensitySimilarityMeasureMethod : int { DensitySimilarityMeasureMethod::innerProduct, DensitySimilarityMeasureMethod::relativeEntropy, DensitySimilarityMeasureMethod::crossCorrelation, Count }
 The methods that determine how two densities are compared to one another. More...
 
enum  CheckpointSignal { noSignal = 0, doCheckpoint = 1 }
 Checkpoint signals. More...
 
enum  ConstraintVariable : int {
  Positions, Velocities, Derivative, Deriv_FlexCon,
  Force, ForceDispl
}
 Describes supported flavours of constrained updates.
 
enum  FlexibleConstraintTreatment { FlexibleConstraintTreatment::Include, FlexibleConstraintTreatment::Exclude }
 Tells make_at2con how to treat flexible constraints. More...
 
enum  NumTempScaleValues { NumTempScaleValues::None = 0, NumTempScaleValues::Single = 1, NumTempScaleValues::Multiple = 2, NumTempScaleValues::Count = 3 }
 Sets the number of different temperature coupling values. More...
 
enum  GraphState : int {
  GraphState::Invalid, GraphState::Recording, GraphState::Recorded, GraphState::Instantiated,
  GraphState::Count
}
 State of graph. More...
 
enum  ResetSignal { noSignal = 0, doResetCounters = 1 }
 Reset signals. More...
 
enum  StopSignal : int { noSignal = 0, stopAtNextNSStep = 1, stopImmediately = -1 }
 Stop signals. More...
 
enum  IncompatibilityReasons {
  FlexibleConstraint, IncompatibleVsite, VsiteConstructingAtomsSplit, ConstrainedAtomOrder,
  NoCentralConstraintAtom, Count
}
 Reasons why the system can be incompatible with update groups.
 
enum  VSiteCalculatePosition { Yes, No }
 Whether we're calculating the virtual site position.
 
enum  VSiteCalculateVelocity { Yes, No }
 Whether we're calculating the virtual site velocity.
 
enum  PbcMode { PbcMode::all, PbcMode::none }
 PBC modes for vsite construction and spreading. More...
 
enum  VSiteOperation { VSiteOperation::Positions, VSiteOperation::Velocities, VSiteOperation::PositionsAndVelocities, VSiteOperation::Count }
 Whether we calculate vsite positions, velocities, or both. More...
 
enum  VirtualSiteVirialHandling : int { VirtualSiteVirialHandling::None, VirtualSiteVirialHandling::Pbc, VirtualSiteVirialHandling::NonLinear }
 Tells how to handle virial contributions due to virtual sites. More...
 
enum  StartingBehavior : int { StartingBehavior::RestartWithAppending, StartingBehavior::RestartWithoutAppending, StartingBehavior::NewSimulation, StartingBehavior::Count }
 Enumeration for describing how mdrun is (re)starting. More...
 
enum  : std::ptrdiff_t { dynamic_extent = -1 }
 Define constant that signals dynamic extent.
 
enum  AwhTargetType : int {
  Constant, Cutoff, Boltzmann, LocalBoltzmann,
  Count, Default = Constant
}
 Target distribution enum.
 
enum  AwhHistogramGrowthType : int { ExponentialLinear, Linear, Count, Default = ExponentialLinear }
 Weight histogram growth enum.
 
enum  AwhPotentialType : int { Convolved, Umbrella, Count, Default = Convolved }
 AWH potential type enum.
 
enum  AwhCoordinateProviderType : int { Pull, FreeEnergyLambda, Count, Default = Pull }
 AWH bias reaction coordinate provider.
 
enum  CheckpointDataOperation { Read, Write, Count }
 The operations on CheckpointData. More...
 
enum  AtomLocality : int { AtomLocality::Local = 0, AtomLocality::NonLocal = 1, AtomLocality::All = 2, AtomLocality::Count = 3 }
 Atom locality indicator: local, non-local, all. More...
 
enum  InteractionLocality : int { InteractionLocality::Local = 0, InteractionLocality::NonLocal = 1, InteractionLocality::Count = 2 }
 Interaction locality indicator: local, non-local, all. More...
 
enum  AppendingBehavior { AppendingBehavior::Auto, AppendingBehavior::Appending, AppendingBehavior::NoAppending }
 Enumeration for mdrun appending behavior. More...
 
enum  MtsForceGroups : int {
  MtsForceGroups::LongrangeNonbonded, MtsForceGroups::Nonbonded, MtsForceGroups::Pair, MtsForceGroups::Dihedral,
  MtsForceGroups::Angle, MtsForceGroups::Pull, MtsForceGroups::Awh, MtsForceGroups::Count
}
 Force group available for selection for multiple time step integration. More...
 
enum  ReductionRequirement : int { ReductionRequirement::Soon, ReductionRequirement::Eventually }
 Control whether reduction is required soon. More...
 
enum  ObservablesReducerStatus : int { ObservablesReducerStatus::ReadyToReduce, ObservablesReducerStatus::AlreadyReducedThisStep }
 Report whether the reduction has happened this step. More...
 
enum  ComputeGlobalsAlgorithm { LeapFrog, VelocityVerlet }
 The different global reduction schemes we know about.
 
enum  EnergySignallerEvent { EnergyCalculationStep, VirialCalculationStep, FreeEnergyCalculationStep }
 The energy events signalled by the EnergySignaller.
 
enum  TrajectoryEvent { StateWritingStep, EnergyWritingStep }
 The trajectory writing events.
 
enum  ModularSimulatorBuilderState { AcceptingClientRegistrations, NotAcceptingClientRegistrations }
 Enum allowing builders to store whether they can accept client registrations.
 
enum  ReportPreviousStepConservedEnergy { Yes, No, Count }
 Enum describing whether an element is reporting conserved energy from the previous step.
 
enum  ScheduleOnInitStep { ScheduleOnInitStep::Yes, ScheduleOnInitStep::No, ScheduleOnInitStep::Count }
 Whether the element does schedule on the initial step. More...
 
enum  NhcUsage { NhcUsage::System, NhcUsage::Barostat, NhcUsage::Count }
 The usages of Nose-Hoover chains. More...
 
enum  ScaleVelocities { PreStepOnly, PreStepAndPostStep }
 Which velocities the thermostat scales.
 
enum  IntegrationStage {
  IntegrationStage::PositionsOnly, IntegrationStage::VelocitiesOnly, IntegrationStage::LeapFrog, IntegrationStage::VelocityVerletPositionsAndVelocities,
  IntegrationStage::ScaleVelocities, IntegrationStage::ScalePositions, IntegrationStage::Count
}
 The different integration types we know about. More...
 
enum  NumPositionScalingValues { NumPositionScalingValues::None, NumPositionScalingValues::Single, NumPositionScalingValues::Multiple, NumPositionScalingValues::Count }
 Sets the number of different position scaling values. More...
 
enum  NumVelocityScalingValues { NumVelocityScalingValues::None, NumVelocityScalingValues::Single, NumVelocityScalingValues::Multiple, Count }
 Sets the number of different velocity scaling values. More...
 
enum  ParrinelloRahmanVelocityScaling { ParrinelloRahmanVelocityScaling::No, ParrinelloRahmanVelocityScaling::Diagonal, ParrinelloRahmanVelocityScaling::Anisotropic, Count }
 Describes the properties of the Parrinello-Rahman pressure scaling matrix. More...
 
enum  ReferenceTemperatureChangeAlgorithm
 The algorithm changing the reference temperature. More...
 
enum  EnergySignallerVirialMode { EnergySignallerVirialMode::Off, EnergySignallerVirialMode::OnStep, EnergySignallerVirialMode::OnStepAndNext, EnergySignallerVirialMode::Count }
 When we calculate virial. More...
 
enum  UseFullStepKE { Yes, No, Count }
 Enum describing whether the thermostat is using full or half step kinetic energy.
 
enum  { nbatXYZ, nbatXYZQ, nbatX4, nbatX8 }
 
enum  LJCombinationRule : int { LJCombinationRule::Geometric, LJCombinationRule::LorentzBerthelot, LJCombinationRule::None, LJCombinationRule::Count }
 LJ combination rules. More...
 
enum  NbnxmBenchMarkKernels : int {
  SimdAuto, SimdNo, Simd4XM, Simd2XMM,
  Count
}
 Enum for selecting the SIMD kernel type for benchmarks.
 
enum  NbnxmBenchMarkCombRule : int { RuleGeom, RuleLB, RuleNone, Count }
 Enum for selecting the combination rule for kernel benchmarks.
 
enum  NbnxmBenchMarkCoulomb : int { Pme, ReactionField, Count }
 Enum for selecting coulomb type for kernel benchmarks.
 
enum  ClusterDistanceKernelType : int {
  ClusterDistanceKernelType::CpuPlainC_4x4, ClusterDistanceKernelType::CpuSimd_4xM, ClusterDistanceKernelType::CpuSimd_2xMM, ClusterDistanceKernelType::Gpu,
  ClusterDistanceKernelType::CpuPlainC_1x1
}
 The types of kernel for calculating the distance between pairs of atom clusters. More...
 
enum  {
  vdwktLJCUT_COMBGEOM, vdwktLJCUT_COMBLB, vdwktLJCUT_COMBNONE, vdwktLJFORCESWITCH,
  vdwktLJPOTSWITCH, vdwktLJEWALDCOMBGEOM, vdwktLJEWALDCOMBLB, vdwktNR = vdwktLJEWALDCOMBLB,
  vdwktNR_ref
}
 Kinds of Van der Waals treatments in NBNxM SIMD kernels. More...
 
enum  { enbvClearFNo, enbvClearFYes }
 Flag to tell the nonbonded kernels whether to clear the force output buffers.
 
enum  ElecType : int {
  ElecType::Cut, ElecType::RF, ElecType::EwaldTab, ElecType::EwaldTabTwin,
  ElecType::EwaldAna, ElecType::EwaldAnaTwin, ElecType::Count
}
 Nbnxm electrostatic GPU kernel flavors. More...
 
enum  VdwType : int {
  VdwType::Cut, VdwType::CutCombGeom, VdwType::CutCombLB, VdwType::FSwitch,
  VdwType::PSwitch, VdwType::EwaldGeom, VdwType::EwaldLB, VdwType::Count
}
 Nbnxm VdW GPU kernel flavors. More...
 
enum  NbnxmKernelType : int {
  NotSet = 0, Cpu4x4_PlainC, Cpu4xN_Simd_4xN, Cpu4xN_Simd_2xNN,
  Gpu8x8x8, Cpu8x8x8_PlainC, Cpu1x1_PlainC, Count
}
 Nonbonded NxN kernel types: plain C, CPU SIMD, GPU, GPU emulation.
 
enum  EwaldExclusionType : int { NotSet = 0, Table, Analytical, DecidedByGpuModule }
 Ewald exclusion types.
 
enum  PairlistType : int {
  Simple4x2, Simple4x4, Simple4x8, Hierarchical8x8x8,
  Simple1x1, Count
}
 The available pair list types.
 
enum  CoulombKernelType : int {
  ReactionField, Table, TableTwin, Ewald,
  EwaldTwin, Count
}
 Kinds of electrostatic treatments in SIMD Verlet kernels.
 
enum  NonbondedResource : int { Cpu, Gpu, EmulateGpu }
 Resources that can be used to execute non-bonded kernels on.
 
enum  { enbsCCgrid, enbsCCsearch, enbsCCcombine, enbsCCnr }
 Local cycle count enum for profiling different parts of search.
 
enum  KernelCoulombType { KernelCoulombType::RF, KernelCoulombType::EwaldAnalytical, KernelCoulombType::EwaldTabulated }
 List of type of Nbnxm kernel coulomb type implementations. More...
 
enum  ILJInteractions { ILJInteractions::All, ILJInteractions::Half, ILJInteractions::None }
 The fraction of i-particles for which LJ interactions need to be computed. More...
 
enum  HelpOutputFormat { eHelpOutputFormat_Console, eHelpOutputFormat_Rst, eHelpOutputFormat_Other, eHelpOutputFormat_NR }
 Output format for help writing. More...
 
enum  COMShiftType : int { Residue, Molecule, Count }
 How COM shifting should be applied.
 
enum  CenteringType : int { Triclinic, Rectangular, Zero, Count }
 Helper enum class to define centering types.
 
enum  UnitCellType : int { Triclinic, Rectangular, Compact, Count }
 Helper enum class to define Unit cell representation types.
 
enum  RandomDomain {
  RandomDomain::Other = 0x00000000, RandomDomain::MaxwellVelocities = 0x00001000, RandomDomain::TestParticleInsertion = 0x00002000, RandomDomain::UpdateCoordinates = 0x00003000,
  RandomDomain::UpdateConstraints = 0x00004000, RandomDomain::Thermostat = 0x00005000, RandomDomain::Barostat = 0x00006000, RandomDomain::ReplicaExchange = 0x00007000,
  RandomDomain::ExpandedEnsemble = 0x00008000, RandomDomain::AwhBiasing = 0x00009000
}
 Enumerated values for fixed part of random seed (domain) More...
 
enum  SelectionStringMatchType { eStringMatchType_Auto, eStringMatchType_Exact, eStringMatchType_Wildcard, eStringMatchType_RegularExpression }
 String matching mode for string keyword expressions. More...
 
enum  TaskTarget : int { Auto, Cpu, Gpu }
 Record where a compute task is targetted.
 
enum  EmulateGpuNonbonded : bool { EmulateGpuNonbonded::No, EmulateGpuNonbonded::Yes }
 Help pass GPU-emulation parameters with type safety. More...
 
enum  GpuTask : int { GpuTask::Nonbonded, GpuTask::Pme, GpuTask::Count }
 Types of compute tasks that can be run on a GPU. More...
 
enum  Isotope {
  H, D, He, Li,
  Be, B, C, N,
  O, F, Ne, Na,
  Mg, Al, Si, P,
  S, Cl, Ar, K,
  Ca, Sc, Ti, V,
  Cr, Mn, Fe, Co,
  Ni, Cu, Zn, Ga,
  Ge, As, Se, Br,
  Kr, Rb, Sr, Y,
  Zr, Nb, Mo, Tc,
  Ru, Rh, Pd, Ag,
  Cd, In, Sn, Sb,
  Te, I, Xe, Cs,
  Ba, La, Ce, Pr,
  Nd, Pm, Sm, Eu,
  Gd, Tb, Dy, Ho,
  Er, Tm, Yb, Lu,
  Hf, Ta, W, Re,
  Os, Ir, Pt, Au,
  Hg, Tl, Pb, Bi,
  Po, At, Rn, Fr,
  Ra, Ac, Th, Pa,
  U, Np, Pu, Am,
  Cm, Bk, Cf, Es,
  Fm, Md, No, Lr,
  Rf, Db, Sg, Bh,
  Hs, Mt, Count
}
 isotopes
 
enum  ErrorCode {
  eeOK, eeOutOfMemory, eeFileNotFound, eeFileIO,
  eeInvalidInput, eeInconsistentInput, eeTolerance, eeInstability,
  eeNotImplemented, eeInvalidValue, eeInvalidCall, eeInternalError,
  eeAPIError, eeRange, eeParallelConsistency, eeModularSimulator,
  eeUnknownError
}
 Possible error return codes from Gromacs functions. More...
 
enum  EndianSwapBehavior : int {
  EndianSwapBehavior::DoNotSwap, EndianSwapBehavior::Swap, EndianSwapBehavior::SwapIfHostIsBigEndian, EndianSwapBehavior::SwapIfHostIsLittleEndian,
  EndianSwapBehavior::Count
}
 Specify endian swapping behavoir. More...
 
enum  GpuAwareMpiStatus : int { GpuAwareMpiStatus::NotSupported = 0, GpuAwareMpiStatus::Forced, GpuAwareMpiStatus::Supported }
 Enum describing GPU-aware support in underlying MPI library. More...
 
enum  StringCompareType { StringCompareType::Exact, StringCompareType::CaseInsensitive, StringCompareType::CaseAndDashInsensitive }
 Specifies how strings should be compared in various contexts. More...
 
enum  StripStrings : int { StripStrings::No, StripStrings::Yes }
 Enum class for whether StringToEnumValueConverter will strip strings of leading and trailing whitespace before comparison. More...
 
enum  TimeUnit : int {
  Femtoseconds, Picoseconds, Nanoseconds, Microseconds,
  Milliseconds, Seconds, Count, Default = Picoseconds
}
 Time values for TimeUnitManager and legacy oenv module.
 
enum  OptionFileType : int {
  Topology, RunInput, Trajectory, Energy,
  PDB, AtomIndex, Plot, GenericData,
  Csv, QMInput, Count
}
 Purpose of file(s) provided through an option.
 
enum  OptionFlag : uint64_t {
  efOption_Set = 1 << 0, efOption_HasDefaultValue = 1 << 1, efOption_ExplicitDefaultValue = 1 << 2, efOption_ClearOnNextSet = 1 << 3,
  efOption_Required = 1 << 4, efOption_MultipleTimes = 1 << 5, efOption_Hidden = 1 << 6, efOption_Vector = 1 << 8,
  efOption_DefaultValueIfSetExists = 1 << 11, efOption_NoDefaultValue = 1 << 9, efOption_DontCheckMinimumCount = 1 << 10
}
 Flags for options. More...
 
enum  SelectionFlag : uint64_t {
  efSelection_OnlyStatic = 1 << 0, efSelection_OnlyAtoms = 1 << 1, efSelection_OnlySorted = 1 << 2, efSelection_DynamicMask = 1 << 3,
  efSelection_DisallowEmpty = 1 << 4, efSelection_EvaluateVelocities = 1 << 5, efSelection_EvaluateForces = 1 << 6
}
 Flags for options. More...
 

Functions

static bool anyDimUsesProvider (const AwhBiasParams &awhBiasParams, const AwhCoordinateProviderType awhCoordProvider)
 Checks whether any dimension uses the given coordinate provider type. More...
 
static bool anyDimUsesProvider (const AwhParams &awhParams, const AwhCoordinateProviderType awhCoordProvider)
 Checks whether any dimension uses the given coordinate provider type. More...
 
static bool anyBiasIsScaledByMetric (const AwhParams &awhParams)
 Checks whether any bias scales the target distribution based on the AWH friction metric. More...
 
std::unique_ptr< AwhprepareAwhModule (FILE *fplog, const t_inputrec &inputRecord, t_state *stateGlobal, const t_commrec *commRecord, const gmx_multisim_t *multiSimRecord, bool startingFromCheckpoint, bool usingShellParticles, const std::string &biasInitFilename, pull_t *pull_work)
 Makes an Awh and prepares to use it if the user input requests that. More...
 
static int64_t countSamples (ArrayRef< const PointState > pointState)
 Count the total number of samples / sample weight over all grid points. More...
 
static void ensureStateAndRunConsistency (const BiasParams &params, const BiasState &state)
 Check if the state (loaded from checkpoint) and the run are consistent. More...
 
double getDeviationFromPointAlongGridAxis (const BiasGrid &grid, int dimIndex, int pointIndex, double value)
 Get the deviation along one dimension from the given value to a point in the grid. More...
 
double getDeviationFromPointAlongGridAxis (const BiasGrid &grid, int dimIndex, int pointIndex1, int pointIndex2)
 Get the deviation from one point to another along one dimension in the grid. More...
 
bool pointsAlongLambdaAxis (const BiasGrid &grid, int pointIndex1, int pointIndex2)
 Checks whether two points are along a free energy lambda state axis. More...
 
bool pointsHaveDifferentLambda (const BiasGrid &grid, int pointIndex1, int pointIndex2)
 Checks whether two points are different in the free energy lambda state dimension (if any). More...
 
void linearArrayIndexToMultiDim (int indexLinear, int ndim, const awh_ivec numPointsDim, awh_ivec indexMulti)
 Convert a linear array index to a multidimensional one. More...
 
void linearGridindexToMultiDim (const BiasGrid &grid, int indexLinear, awh_ivec indexMulti)
 Convert a linear grid point index to a multidimensional one. More...
 
int multiDimArrayIndexToLinear (const awh_ivec indexMulti, int numDim, const awh_ivec numPointsDim)
 Convert multidimensional array index to a linear one. More...
 
int multiDimGridIndexToLinear (const BiasGrid &grid, const awh_ivec indexMulti)
 Convert a multidimensional grid point index to a linear one. More...
 
bool advancePointInSubgrid (const BiasGrid &grid, const awh_ivec subgridOrigin, const awh_ivec subgridNpoints, int *gridPointIndex)
 Find the next grid point in the sub-part of the grid given a starting point. More...
 
static int pointDistanceAlongAxis (const GridAxis &axis, double x, double x0)
 Returns the point distance between from value x to value x0 along the given axis. More...
 
static bool valueIsInGrid (const awh_dvec value, ArrayRef< const GridAxis > axis)
 Query if a value is in range of the grid. More...
 
static int getNearestIndexInGrid (const awh_dvec value, ArrayRef< const GridAxis > axis)
 Map a value to the nearest point in the grid. More...
 
void mapGridToDataGrid (std::vector< int > *gridpointToDatapoint, const MultiDimArray< std::vector< double >, dynamicExtents2D > &data, int numDataPoints, const std::string &dataFilename, const BiasGrid &grid, const std::string &correctFormatMessage)
 Maps each point in the grid to a point in the data grid. More...
 
template<typename T >
void sumOverSimulations (ArrayRef< T > data, MPI_Comm multiSimComm, const bool broadcastWithinSimulation, const t_commrec &commRecord)
 Sum an array over all simulations on main ranks or all ranks of each simulation. More...
 
bool haveBiasSharingWithinSimulation (const AwhParams &awhParams)
 Returns if any bias is sharing within a simulation. More...
 
void biasesAreCompatibleForSharingBetweenSimulations (const AwhParams &awhParams, ArrayRef< const size_t > pointSize, const BiasSharing &biasSharing)
 Checks whether biases are compatible for sharing between simulations, throws when not. More...
 
static void normalizeFreeEnergyAndPmfSum (std::vector< PointState > *pointState)
 Normalizes the free energy and PMF sum. More...
 
static int countTrailingZeroRows (const MultiDimArray< std::vector< double >, dynamicExtents2D > &data, int numRows, int numColumns)
 Count trailing data rows containing only zeros. More...
 
static void readUserPmfAndTargetDistribution (ArrayRef< const DimParams > dimParams, const BiasGrid &grid, const std::string &filename, int numBias, int biasIndex, std::vector< PointState > *pointState)
 Initializes the PMF and target with data read from an input table. More...
 
static void normalizeBlock (AwhEnergyBlock *block, const Bias &bias)
 Normalizes block data for output. More...
 
void initCorrelationGridHistory (CorrelationGridHistory *correlationGridHistory, int numCorrelationTensors, int tensorSize, int blockDataListSize)
 Initialize correlation grid history, sets all sizes. More...
 
CorrelationGridHistory initCorrelationGridHistoryFromState (const CorrelationGrid &corrGrid)
 Allocate a correlation grid history with the same structure as the given correlation grid. More...
 
void updateCorrelationGridHistory (CorrelationGridHistory *corrGridHist, const CorrelationGrid &corrGrid)
 Update the correlation grid history for checkpointing. More...
 
void restoreCorrelationGridStateFromHistory (const CorrelationGridHistory &corrGridHist, CorrelationGrid *corrGrid)
 Restores the correlation grid state from the correlation grid history. More...
 
double getSqrtDeterminant (gmx::ArrayRef< const double > correlationIntegral)
 Returns the volume element of the correlation metric. More...
 
const char * enumValueToString (AwhTargetType enumValue)
 String for target distribution.
 
const char * enumValueToString (AwhHistogramGrowthType enumValue)
 String for weight histogram growth.
 
const char * enumValueToString (AwhPotentialType enumValue)
 String for AWH potential type.
 
const char * enumValueToString (AwhCoordinateProviderType enumValue)
 String for AWH bias reaction coordinate provider.
 
static double get_pull_coord_period (const t_pull_coord &pullCoordParams, const t_pbc &pbc, const real intervalLength)
 Gets the period of a pull coordinate. More...
 
static bool intervalIsInPeriodicInterval (double origin, double end, double period)
 Checks if the given interval is defined in the correct periodic interval. More...
 
static bool valueIsInInterval (double origin, double end, double period, double value)
 Checks if a value is within an interval. More...
 
static void checkInputConsistencyInterval (const AwhParams &awhParams, WarningHandler *wi)
 Check if the starting configuration is consistent with the given interval. More...
 
static void setStateDependentAwhPullDimParams (AwhDimParams *dimParams, const int biasIndex, const int dimIndex, const pull_params_t &pull_params, pull_t *pull_work, const t_pbc &pbc, const tensor &compressibility, WarningHandler *wi)
 Sets AWH parameters, for one AWH pull dimension. More...
 
void setStateDependentAwhParams (AwhParams *awhParams, const pull_params_t &pull_params, pull_t *pull_work, const matrix box, PbcType pbcType, const tensor &compressibility, const t_inputrec &inputrec, real initLambda, const gmx_mtop_t &mtop, WarningHandler *wi)
 Sets AWH parameters that need state parameters such as the box vectors. More...
 
void checkAwhParams (const AwhParams &awhParams, const t_inputrec &inputrec, WarningHandler *wi)
 Check the AWH parameters. More...
 
bool awhHasFepLambdaDimension (const AwhParams &awhParams)
 Returns true when AWH has a bias with a free energy lambda state dimension.
 
bool operator== (const DensityFittingParameters &lhs, const DensityFittingParameters &rhs)
 Check if two structs holding density fitting parameters are equal. More...
 
bool operator!= (const DensityFittingParameters &lhs, const DensityFittingParameters &rhs)
 Check if two structs holding density fitting parameters are not equal. More...
 
std::unique_ptr< IMDModulecreateElectricFieldModule ()
 Creates a module for an external electric field. More...
 
 atomNumbers_ (params_.numAtoms_,-1)
 
 idxLookup_ (params_.numAtoms_,-1)
 
 logger_ (logger)
 
 cr_ (params_.cr_)
 
template<class ToType , class TransformWithFunctionType >
void NNPotMdpTransformFromString (IKeyValueTreeTransformRules *rules, TransformWithFunctionType transformationFunction, const std::string &optionTag)
 
static std::string recordToString (std::tuple< at::DataPtr, size_t > data)
 
RVec computeQMBoxVec (const RVec &a, const RVec &b, const RVec &c, real h, real minNorm, real maxNorm)
 Transforms vector a such as distance from it to the plane defined by vectors b and c will be h minimum length will be milL and maximum length maxL. More...
 
CommandLineProgramContextinitForCommandLine (int *argc, char ***argv)
 Initializes the GROMACS library for command-line use. More...
 
void finalizeForCommandLine ()
 Deinitializes the GROMACS library after initForCommandLine(). More...
 
int processExceptionAtExitForCommandLine (const std::exception &ex)
 Handles an exception and deinitializes after initForCommandLine. More...
 
int runCommandLineModule (int argc, char *argv[], ICommandLineModule *module)
 Implements a main() method that runs a single module. More...
 
int runCommandLineModule (int argc, char *argv[], const char *name, const char *description, std::function< std::unique_ptr< ICommandLineOptionsModule >()> factory)
 Implements a main() method that runs a single module. More...
 
void writeCommandLineHelpCMain (const CommandLineHelpContext &context, const char *name, int(*mainFunction)(int argc, char *argv[]))
 Helper to implement ICommandLineModule::writeHelp() with a C-like main() function that calls parse_common_args(). More...
 
static int getFileType (const std::string &filename)
 Get the internal file type from the filename. More...
 
static unsigned long getSupportedOutputAdapters (int filetype)
 Get the flag representing the requirements for a given file output. More...
 
static OutputAdapterContainer addOutputAdapters (const OutputRequirements &requirements, AtomsDataPtr atoms, const Selection &sel, unsigned long abilities)
 Creates a new container object with the user requested IOutputAdapter derived methods attached to it. More...
 
std::unique_ptr
< TrajectoryFrameWriter
createTrajectoryFrameWriter (const gmx_mtop_t *top, const Selection &sel, const std::string &filename, AtomsDataPtr atoms, OutputRequirements requirements)
 Factory function for TrajectoryFrameWriter. More...
 
static void deepCopy_t_trxframe (const t_trxframe &input, t_trxframe *copy, RVec *xvec, RVec *vvec, RVec *fvec, int *indexvec)
 Create a deep copy of a t_trxframe input into copy. More...
 
static t_trxstatus * openTNG (const std::string &name, const Selection &sel, const gmx_mtop_t *mtop)
 Method to open TNG file. More...
 
unsigned long convertFlag (CoordinateFileFlags flag)
 Conversion of flag to its corresponding unsigned long value.
 
unsigned long convertFlag (FrameConverterFlags flag)
 Conversion of flag to its corresponding unsigned long value.
 
static void adjustAtomInformation (t_atoms *atoms, t_atoms *selectionAtoms, const Selection &sel)
 Modify atoms information in coordinate frame to fit output selection. More...
 
template<bool usePbc>
static auto packSendBufKernel (Float3 *__restrict__ gm_dataPacked, const Float3 *__restrict__ gm_data, const int *__restrict__ gm_map, int mapSize, Float3 coordinateShift)
 
template<bool accumulate>
static auto unpackRecvBufKernel (Float3 *__restrict__ gm_data, const Float3 *__restrict__ gm_dataPacked, const int *__restrict__ gm_map, int mapSize)
 unpack non-local force data buffer on the GPU using pre-populated "map" containing index information. More...
 
template<bool usePbc, class... Args>
static void launchPackSendBufKernel (const DeviceStream &deviceStream, int xSendSize, Args &&...args)
 
template<bool accumulateForces, class... Args>
static void launchUnpackRecvBufKernel (const DeviceStream &deviceStream, int fRecvSize, Args &&...args)
 
static void flagInteractionsForType (const int ftype, const InteractionList &il, const reverse_ilist_t &ril, const Range< int > &atomRange, const int numAtomsPerMolecule, ArrayRef< const int > globalAtomIndices, ArrayRef< int > isAssigned)
 Checks whether interactions have been assigned for one function type. More...
 
static std::string printMissingInteractionsMolblock (const t_commrec *cr, const gmx_reverse_top_t &rt, const char *moltypename, const reverse_ilist_t &ril, const Range< int > &atomRange, const int numAtomsPerMolecule, const int numMolecules, const InteractionDefinitions &idef)
 Help print error output when interactions are missing in a molblock. More...
 
static void printMissingInteractionsAtoms (const MDLogger &mdlog, const t_commrec *cr, const gmx_mtop_t &mtop, const InteractionDefinitions &idef)
 Help print error output when interactions are missing.
 
static void dd_print_missing_interactions (const MDLogger &mdlog, const t_commrec *cr, const int numBondedInteractionsOverAllDomains, const int expectedNumGlobalBondedInteractions, const gmx_mtop_t &top_global, const gmx_localtop_t &top_local, ArrayRef< const RVec > x, const matrix box)
 Print error output when interactions are missing.
 
static int computeExpectedNumGlobalBondedInteractions (const gmx_mtop_t &mtop, const DDBondedChecking ddBondedChecking, const bool useUpdateGroups)
 Compute the total bonded interaction count. More...
 
void mdAlgorithmsSetupAtomData (const t_commrec *cr, const t_inputrec &inputrec, const gmx_mtop_t &top_global, gmx_localtop_t *top, t_forcerec *fr, ForceBuffers *force, MDAtoms *mdAtoms, Constraints *constr, VirtualSitesHandler *vsite, gmx_shellfc_t *shellfc)
 Sets atom data for several MD algorithms. More...
 
void make_local_shells (const t_commrec *cr, const t_mdatoms &md, gmx_shellfc_t *shfc)
 Gets the local shell with domain decomposition. More...
 
bool check_grid_jump (int64_t step, const gmx_domdec_t *dd, real cutoff, const gmx_ddbox_t *ddbox, bool bFatal)
 Check whether the DD grid has moved too far for correctness.
 
void print_dd_statistics (const t_commrec *cr, const t_inputrec &inputrec, FILE *fplog)
 Print statistics for domain decomposition communication.
 
void dd_partition_system (FILE *fplog, const gmx::MDLogger &mdlog, int64_t step, const t_commrec *cr, bool bMainState, t_state *state_global, const gmx_mtop_t &top_global, const t_inputrec &inputrec, const MDModulesNotifiers &mdModulesNotifiers, gmx::ImdSession *imdSession, pull_t *pull_work, t_state *state_local, gmx::ForceBuffers *f, gmx::MDAtoms *mdAtoms, gmx_localtop_t *top_local, t_forcerec *fr, gmx::VirtualSitesHandler *vsite, gmx::Constraints *constr, t_nrnb *nrnb, gmx_wallcycle *wcycle, bool bVerbose)
 TODO Remove fplog when group scheme and charge groups are gone. More...
 
static void handleCufftError (cufftResult_t status, const char *msg)
 
 makePlan ("complex-to-real", rocfft_transform_type_real_inverse, PlanSetupData{rocfft_array_type_hermitian_interleaved, makeComplexStrides(complexGridSizePadded), computeTotalSize(complexGridSizePadded)}, PlanSetupData{rocfft_array_type_real, makeRealStrides(realGridSizePadded), computeTotalSize(realGridSizePadded)}, std::vector< size_t >{size_t(realGridSize[ZZ]), size_t(realGridSize[YY]), size_t(realGridSize[XX])})}
 
realGrid_ pmeStream_ (pmeStream)
 
static void handleClfftError (clfftStatus status, const char *msg)
 Throws the exception on clFFT error.
 
 makePlan ("complex-to-real", rocfft_transform_type_real_inverse, PlanSetupData{rocfft_array_type_hermitian_interleaved, makeComplexStrides(complexGridSizePadded), computeTotalSize(complexGridSizePadded)}, PlanSetupData{rocfft_array_type_real, makeRealStrides(realGridSizePadded), computeTotalSize(realGridSizePadded)}, std::vector< size_t >{size_t(realGridSize[ZZ]), size_t(realGridSize[YY]), size_t(realGridSize[XX])}, pmeStream)
 
realGrid_ * realGrid ()),{GMX_RELEASE_ASSERT(performOutOfPlaceFFT,"Only out-of-place FFT is implemented in hipSYCL"
 
 GMX_RELEASE_ASSERT (allocateRealGrid==false,"Grids need to be pre-allocated")
 
 GMX_RELEASE_ASSERT (gridSizesInXForEachRank.size()==1 &&gridSizesInYForEachRank.size()==1,"FFT decomposition not implemented with the SYCL rocFFT backend")
 
template<typename NativeQueue >
static void launchVkFft (const DeviceBuffer< float > &realGrid, const DeviceBuffer< float > &complexGrid, NativeQueue queue, gmx_fft_direction fftDirection, VkFFTApplication *application, VkFFTLaunchParams *launchParams)
 
void handleRocFftError (rocfft_status result, const std::string &msg)
 Helper for consistent error handling.
 
void handleRocFftError (rocfft_status result, const std::string &direction, const std::string &msg)
 Helper for consistent error handling.
 
std::array< size_t, DIM > makeRealStrides (ivec realGridSizePadded)
 Compute the stride through the real 1D array.
 
std::array< size_t, DIM > makeComplexStrides (ivec complexGridSizePadded)
 Compute the stride through the complex 1D array.
 
size_t computeTotalSize (ivec gridSize)
 Compute total grid size.
 
template<typename ValueType >
void readKvtCheckpointValue (compat::not_null< ValueType * > value, const std::string &name, const std::string &identifier, const KeyValueTreeObject &kvt)
 Read to a key-value-tree value used for checkpointing. More...
 
template void readKvtCheckpointValue (compat::not_null< std::int64_t * > value, const std::string &name, const std::string &identifier, const KeyValueTreeObject &kvt)
 Read to a key-value-tree value used for checkpointing. More...
 
template void readKvtCheckpointValue (compat::not_null< real * > value, const std::string &name, const std::string &identifier, const KeyValueTreeObject &kvt)
 Read to a key-value-tree value used for checkpointing. More...
 
template<typename ValueType >
void writeKvtCheckpointValue (const ValueType &value, const std::string &name, const std::string &identifier, KeyValueTreeObjectBuilder kvtBuilder)
 Write to a key-value-tree used for checkpointing. More...
 
template void writeKvtCheckpointValue (const std::int64_t &value, const std::string &name, const std::string &identifier, KeyValueTreeObjectBuilder kvtBuilder)
 Write to a key-value-tree used for checkpointing. More...
 
template void writeKvtCheckpointValue (const real &value, const std::string &name, const std::string &identifier, KeyValueTreeObjectBuilder kvtBuilder)
 Write to a key-value-tree used for checkpointing. More...
 
void printHdf5ErrorsDebug ()
 Helper function for printing debug statements. More...
 
void throwUponH5mdError (const bool errorExists, const std::string &message)
 
hid_t createGroup (const hid_t container, const char *name)
 Create an H5MD group, and intermediate groups if they do not exist. More...
 
hid_t openOrCreateGroup (const hid_t container, const char *name)
 Open an existing HDF5 group or create it if it did not exist already. More...
 
void setAttribute (const hid_t container, const char *name, const char *value)
 Set a string attribute value in a group or data set. More...
 
std::optional< std::string > getAttribute (const hid_t container, const char *name)
 Get a string attribute value from a group or data set. More...
 
size_t numberOfExpectedDataItems (const MrcDensityMapHeader &header)
 Return the number of density data items that are expected to follow this header. More...
 
TranslateAndScale getCoordinateTransformationToLattice (const MrcDensityMapHeader &header)
 Extract the transformation into lattice coordinates. More...
 
dynamicExtents3D getDynamicExtents3D (const MrcDensityMapHeader &header)
 Extract the extents of the density data. More...
 
bool mrcHeaderIsSane (const MrcDensityMapHeader &header)
 Checks if the values in the header are sane. More...
 
void serializeMrcDensityMapHeader (ISerializer *serializer, const MrcDensityMapHeader &mrcHeader)
 Serializes an MrcDensityMapHeader from a given serializer. More...
 
MrcDensityMapHeader deserializeMrcDensityMapHeader (ISerializer *serializer)
 Deserializes an MrcDensityMapHeader from a given serializer. More...
 
static real smallestAtomMass (const gmx_mtop_t &mtop)
 
void repartitionAtomMasses (gmx_mtop_t *mtop, bool useFep, real massFactor, WarningHandler *wi)
 Scales the smallest masses in the system by up to massFactor. More...
 
template<typename Queue , typename CommandGroupFunc >
static void syclSubmitWithoutEvent (Queue &&queue, CommandGroupFunc &&cgf)
 Helper function to submit a SYCL operation without returning an event. More...
 
template<typename CommandGroupFunc >
static void syclEnqueueCustomOp (sycl::handler &cgh, CommandGroupFunc &&cgf)
 Helper function to add a custom operation to the SYCL handler. More...
 
template<typename T >
static Float3asGenericFloat3Pointer (T *in)
 Reinterpret-cast any pointer in to Float3, checking the type compatibility.
 
template<typename T >
static const Float3asGenericFloat3Pointer (const T *in)
 Reinterpret-cast any const pointer in to Float3, checking the type compatibility.
 
template<typename C >
static Float3asGenericFloat3Pointer (C &in)
 Reinterpret-cast any container in to Float3, checking the type compatibility.
 
template<typename C >
static const Float3asGenericFloat3Pointer (const C &in)
 Reinterpret-cast any const container in to Float3, checking the type compatibility.
 
std::string getDeviceErrorString (const hipError_t deviceError)
 Add the API information on the specific error to the error message. More...
 
void checkDeviceError (const hipError_t deviceError, const std::string &errorMessage)
 Check if API returned an error and throw an exception with information on it. More...
 
void ensureNoPendingDeviceError (const std::string &errorMessage)
 Helper function to ensure no pending error silently disrupts error handling. More...
 
template<typename PinnableVector >
void changePinningPolicy (PinnableVector *v, PinningPolicy pinningPolicy)
 Helper function for changing the pinning policy of a pinnable vector. More...
 
void doDeviceTransfers (const DeviceContext &deviceContext, ArrayRef< const char > input, ArrayRef< char > output)
 Helper function for GPU test code to be platform agnostic. More...
 
bool cpuIsX86Nehalem (const CpuInfo &cpuInfo)
 Return true if the CPU is an Intel x86 Nehalem. More...
 
bool cpuIsAmdZen1 (const CpuInfo &cpuInfo)
 Return true if the CPU is a first generation AMD Zen (produced by AMD or Hygon) More...
 
static DeviceDetectionResult detectAllDeviceInformation (const PhysicalNodeCommunicator &physicalNodeComm)
 Detect GPUs when that makes sense to attempt. More...
 
static void gmx_collect_hardware_mpi (const gmx::CpuInfo &cpuInfo, const PhysicalNodeCommunicator &physicalNodeComm, gmx_hw_info_t *hardwareInfo, [[maybe_unused]] MPI_Comm world)
 Reduce the locally collected hardwareInfo over MPI ranks.
 
std::unique_ptr< gmx_hw_info_t > gmx_detect_hardware (const PhysicalNodeCommunicator &physicalNodeComm, MPI_Comm libraryCommWorld)
 Run detection and make correct and consistent hardware information available on all ranks. More...
 
void logHardwareDetectionWarnings (const gmx::MDLogger &mdlog, const gmx_hw_info_t &hardwareInformation)
 Issue warnings to mdlog that were decided during detection. More...
 
static bool runningOnCompatibleOSForAmd ()
 Return true if executing on compatible OS for AMD OpenCL. More...
 
static bool runningOnCompatibleHWForNvidia (const DeviceInformation &deviceInfo)
 Return true if executing on compatible GPU for NVIDIA OpenCL. More...
 
static FixedCapacityVector
< int, 10 > 
fillSupportedSubGroupSizes (const cl_device_id devId, const DeviceVendor deviceVendor)
 Return the list of sub-group sizes supported by the device. More...
 
static bool runningOnCompatibleHWForAmd (const DeviceInformation &deviceInfo)
 Return true if executing on compatible GPU for AMD OpenCL. More...
 
static DeviceStatus isDeviceFunctional (const DeviceInformation &deviceInfo)
 Checks that device deviceInfo is compatible with GROMACS. More...
 
std::string makeOpenClInternalErrorString (const char *message, cl_int status)
 Make an error string following an OpenCL API call. More...
 
static bool isDeviceFunctional (const DeviceInformation &deviceInfo, std::string *errorMessage)
 Checks that device deviceInfo is sane (ie can run a kernel). More...
 
static DeviceStatus checkGpu (size_t deviceId, const DeviceInformation &deviceInfo)
 Check whether the ocl_gpu_device is suitable for use by mdrun. More...
 
int identifyAvx512FmaUnits ()
 Test whether machine has dual AVX512 FMA units. More...
 
static const std::string & simdString (SimdType s)
 
SimdType simdSuggested (const CpuInfo &c)
 Return the SIMD type that would fit this hardware best.
 
static SimdType simdCompiled ()
 
bool simdCheck (const CpuInfo &cpuInfo, SimdType wanted, FILE *log, bool warnToStdErr)
 Check if binary was compiled with the provided SIMD type. More...
 
std::unique_ptr< IMDModulecreateInteractiveMolecularDynamicsModule ()
 Creates a module for interactive molecular dynamics.
 
static const char * enumValueToString (IMDMessageType enumValue)
 Names of the IMDType for error messages.
 
static void fill_header (IMDHeader *header, IMDMessageType type, int32_t length)
 Fills the header with message and the length argument.
 
static void swap_header (IMDHeader *header)
 Swaps the endianess of the header.
 
static int32_t imd_read_multiple (IMDSocket *socket, char *datptr, int32_t toread)
 Reads multiple bytes from socket.
 
static int32_t imd_write_multiple (IMDSocket *socket, const char *datptr, int32_t towrite)
 Writes multiple bytes to socket in analogy to imd_read_multiple.
 
static int imd_handshake (IMDSocket *socket)
 Handshake with IMD client.
 
static int imd_send_energies (IMDSocket *socket, const IMDEnergyBlock *energies, char *buffer)
 Send energies using the energy block and the send buffer.
 
static IMDMessageType imd_recv_header (IMDSocket *socket, int32_t *length)
 Receive IMD header from socket, sets the length and returns the IMD message.
 
static bool imd_recv_mdcomm (IMDSocket *socket, int32_t nforces, int32_t *forcendx, float *forces)
 Receive force indices and forces. More...
 
void write_IMDgroup_to_file (bool bIMD, t_inputrec *ir, const t_state *state, const gmx_mtop_t &sys, int nfile, const t_filenm fnm[])
 Writes out the group of atoms selected for interactive manipulation. More...
 
static int imd_send_rvecs (IMDSocket *socket, int nat, rvec *x, char *buffer)
 Send positions from rvec. More...
 
static bool rvecs_differ (const rvec v1, const rvec v2)
 Returns true if any component of the two rvecs differs.
 
static void shift_positions (const matrix box, rvec x[], const ivec is, int nr)
 Copied and modified from groupcoord.c shift_positions_group().
 
static void imd_check_integrator_parallel (const t_inputrec *ir, const t_commrec *cr)
 Check for non-working integrator / parallel options.
 
std::unique_ptr< ImdSession > makeImdSession (const t_inputrec *ir, const t_commrec *cr, gmx_wallcycle *wcycle, gmx_enerdata_t *enerd, const gmx_multisim_t *ms, const gmx_mtop_t &top_global, const MDLogger &mdlog, gmx::ArrayRef< const gmx::RVec > coords, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, const ImdOptions &options, StartingBehavior startingBehavior)
 Makes and returns an initialized IMD session, which may be inactive. More...
 
int imdsock_winsockinit ()
 Define a function to initialize winsock. More...
 
static void print_IMD_error (const char *file, int line, char *msg)
 Print a nice error message on UNIX systems, using errno.h.
 
IMDSocketimdsock_create ()
 Create an IMD main socket. More...
 
void imd_sleep (unsigned int seconds)
 Portability wrapper around sleep function.
 
int imdsock_bind (IMDSocket *sock, int port)
 Bind the IMD socket to address and port. More...
 
int imd_sock_listen (IMDSocket *sock)
 Set socket to listening state. More...
 
IMDSocketimdsock_accept (IMDSocket *sock)
 Accept incoming connection and redirect to client socket. More...
 
int imdsock_getport (IMDSocket *sock, int *port)
 Get the port number used for IMD connection. More...
 
int imd_htonl (int src)
 Portability wrapper around system htonl function.
 
int imd_ntohl (int src)
 Portability wrapper around system ntohl function.
 
int imdsock_write (IMDSocket *sock, const char *buffer, int length)
 Write to socket. More...
 
int imdsock_read (IMDSocket *sock, char *buffer, int length)
 Read from socket. More...
 
void imdsock_shutdown (IMDSocket *sock)
 Shutdown the socket. More...
 
int imdsock_destroy (IMDSocket *sock)
 Close the socket and free the sock struct memory. More...
 
int imdsock_tryread (IMDSocket *sock, int timeoutsec, int timeoutusec)
 Try to read from the socket. More...
 
bool buildSupportsListedForcesGpu (std::string *error)
 Checks whether the GROMACS build allows to compute bonded interactions on a GPU. More...
 
bool inputSupportsListedForcesGpu (const t_inputrec &ir, const gmx_mtop_t &mtop, std::string *error)
 Checks whether the input system allows to compute bonded interactions on a GPU. More...
 
static bool someInteractionsCanRunOnGpu (const InteractionLists &ilists)
 Returns whether there are any interactions in ilists suitable for a GPU.
 
static bool bondedInteractionsCanRunOnGpu (const gmx_mtop_t &mtop)
 Returns whether there are any bonded interactions in the global topology suitable for a GPU.
 
static int chooseSubGroupSizeForDevice (const DeviceInformation &deviceInfo)
 
static bool fTypeHasPerturbedEntries (const InteractionDefinitions &idef, int fType)
 Return whether function type fType in idef has perturbed interactions.
 
static void convertIlistToNbnxnOrder (const InteractionList &src, HostInteractionList *dest, int numAtomsPerInteraction, ArrayRef< const int > nbnxnAtomOrder)
 Converts src with atom indices in state order to dest in nbnxn order.
 
static int roundUpToFactor (const int input, const int factor)
 Returns input rounded up to the closest multiple of factor.
 
template<bool calcVir, bool calcEner>
auto bondedKernel (sycl::handler &cgh, const BondedGpuKernelParameters &kernelParams, const DeviceBuffer< t_iatom > gm_iatoms_[numFTypesOnGpu], float *__restrict__ gm_vTot, const t_iparams *__restrict__ gm_forceParams_, const sycl::float4 *__restrict__ gm_xq_, Float3 *__restrict__ gm_f_, Float3 *__restrict__ gm_fShift_)
 
static void PrintTo (const RVec &value, std::ostream *os)
 Print an RVec to os.
 
static void PrintTo (const PaddedVector< RVec > &vector, std::ostream *os)
 Print a padded vector of RVec to os.
 
void normalizeSumPositiveValuesToUnity (ArrayRef< float > data)
 Divide all values of a view by a constant so that the sum of all its positive values is one. More...
 
void exponentialMovingAverageStateAsKeyValueTree (KeyValueTreeObjectBuilder builder, const ExponentialMovingAverageState &state)
 Convert the exponential moving average state as key-value-tree object.
 
ExponentialMovingAverageState exponentialMovingAverageStateFromKeyValueTree (const KeyValueTreeObject &object)
 Sets the exponential moving average state from a key-value-tree object. More...
 
unsigned int log2I (std::uint32_t x)
 Compute floor of logarithm to base 2, 32 bit unsigned argument. More...
 
unsigned int log2I (std::uint64_t x)
 Compute floor of logarithm to base 2, 64 bit unsigned argument. More...
 
unsigned int log2I (std::int32_t x)
 Compute floor of logarithm to base 2, 32 bit signed argument. More...
 
unsigned int log2I (std::int64_t x)
 Compute floor of logarithm to base 2, 64 bit signed argument. More...
 
std::int64_t greatestCommonDivisor (std::int64_t p, std::int64_t q)
 Find greatest common divisor of two numbers. More...
 
double erfinv (double x)
 Inverse error function, double precision. More...
 
float erfinv (float x)
 Inverse error function, single precision. More...
 
IntegerBox spreadRangeWithinLattice (const IVec &center, dynamicExtents3D extent, IVec range)
 Construct a box that holds all indices that are not more than a given range remote from center coordinates and still within a given lattice extent. More...
 
static void assertMatrixIsBoxMatrix (const Matrix3x3 gmx_used_in_debug &m)
 Assert that the matrix m describes a simulation box. More...
 
static void assertMatrixIsBoxMatrix (const matrix gmx_used_in_debug m)
 Assert that the matrix m describes a simulation box. More...
 
static void multiplyVectorByTransposeOfBoxMatrix (const Matrix3x3 &m, const rvec v, rvec result)
 Multiply vector v by the transpose of the box matrix m, relying on the fact that the upper triangle of the matrix is zero.
 
static RVec multiplyVectorByTransposeOfBoxMatrix (const Matrix3x3 &m, const RVec &v)
 Multiply vector v by the transpose of the box matrix m, relying on the fact that the upper triangle of the matrix is zero.
 
static Matrix3x3 multiplyBoxMatrices (const Matrix3x3 &a, const Matrix3x3 &b)
 Multiply box matrices, relying on the fact that their upper triangle is zero.
 
static Matrix3x3 multiplyBoxMatrices (const Matrix3x3 &a, const matrix b)
 Multiply box matrices, relying on the fact that their upper triangle is zero.
 
static Matrix3x3 invertBoxMatrix (const Matrix3x3 &src)
 Invert a simulation-box matrix. More...
 
static void invertBoxMatrix (const matrix src, matrix dest)
 Invert a simulation-box matrix in src, return in dest. More...
 
void invertMatrix (const matrix src, matrix dest)
 Invert a general 3x3 matrix in src, return in dest. More...
 
constexpr real determinant (Matrix3x3ConstSpan matrix)
 Determinant of a 3x3 matrix.
 
constexpr real trace (Matrix3x3ConstSpan matrixView)
 Calculates the trace of a 3x3 matrix view.
 
template<typename ElementType , int N, int M = N>
MultiDimArray< std::array
< ElementType, N *M >, extents
< N, M > > 
diagonalMatrix (const ElementType value)
 Create a diagonal matrix of ElementType with N * M elements. More...
 
template<typename ElementType , int N, int M = N>
MultiDimArray< std::array
< ElementType, N *M >, extents
< N, M > > 
identityMatrix ()
 Create an identity matrix of ElementType with N * M elements. More...
 
Matrix3x3 transpose (Matrix3x3ConstSpan matrixView)
 Calculate the transpose of a 3x3 matrix, from its view.
 
void matrixVectorMultiply (Matrix3x3ConstSpan matrix, RVec *v)
 Multiply matrix with vector.
 
static Matrix3x3 createMatrix3x3FromLegacyMatrix (const matrix legacyMatrix)
 Create new matrix type from legacy type.
 
static void fillLegacyMatrix (Matrix3x3ConstSpan newMatrix, matrix legacyMatrix)
 Fill legacy matrix from new matrix type.
 
template<typename ElementType >
BasicVector< ElementType > multiplyVectorByMatrix (const BasicMatrix3x3< ElementType > &m, const rvec v)
 Return the product of multiplying the vector v by the 3x3 matrix m.
 
template<typename ElementType >
BasicMatrix3x3< ElementType > operator+ (const BasicMatrix3x3< ElementType > &a, const BasicMatrix3x3< ElementType > &b)
 Return the sum of two 3x3 matrices a and b.
 
template<typename ElementType >
BasicMatrix3x3< ElementType > operator- (const BasicMatrix3x3< ElementType > &a, const BasicMatrix3x3< ElementType > &b)
 Return the difference between two 3x3 matrices a and b.
 
template<typename ElementType >
BasicMatrix3x3< ElementType > operator- (const BasicMatrix3x3< ElementType > &a)
 Return the negative 3x3 matrix from matrix a.
 
template<typename ElementType >
BasicMatrix3x3< ElementType > inner (const BasicMatrix3x3< ElementType > &a, const BasicMatrix3x3< ElementType > &b)
 Return the inner product of multiplication of two 3x3 matrices a and b.
 
template<typename ElementType >
BasicMatrix3x3< ElementType > operator* (const BasicMatrix3x3< ElementType > &a, const BasicMatrix3x3< ElementType > &b)
 Return the inner product of multiplication of two 3x3 matrices a and b.
 
template<typename ElementType >
BasicMatrix3x3< ElementType > operator* (const BasicMatrix3x3< ElementType > &m, const ElementType s)
 Return the product of multiplying the 3x3 matrix m by the scalar s.
 
template<typename ElementType >
BasicMatrix3x3< ElementType > operator* (const ElementType s, const BasicMatrix3x3< ElementType > &m)
 Return the product of multiplying the 3x3 matrix m by the scalar s.
 
template<typename ElementType >
BasicVector< ElementType > diagonal (const BasicMatrix3x3< ElementType > &m)
 Return a vector that is the diagonal of the 3x3 matrix m.
 
template<class TContainer , class Extents >
constexpr MultiDimArray
< TContainer, Extents >
::const_iterator 
begin (const MultiDimArray< TContainer, Extents > &multiDimArray)
 Free MultiDimArray begin function addressing its contiguous memory.
 
template<class TContainer , class Extents >
constexpr MultiDimArray
< TContainer, Extents >
::iterator 
begin (MultiDimArray< TContainer, Extents > &multiDimArray)
 Free MultiDimArray begin function addressing its contiguous memory.
 
template<class TContainer , class Extents >
constexpr MultiDimArray
< TContainer, Extents >
::const_iterator 
end (const MultiDimArray< TContainer, Extents > &multiDimArray)
 Free MultiDimArray end function addressing its contiguous memory.
 
template<class TContainer , class Extents >
constexpr MultiDimArray
< TContainer, Extents >
::iterator 
end (MultiDimArray< TContainer, Extents > &multiDimArray)
 Free MultiDimArray end function addressing its contiguous memory.
 
template<class TContainer , class Extents >
void swap (MultiDimArray< TContainer, Extents > &a, MultiDimArray< TContainer, Extents > &b) noexcept
 Swap function.
 
OptimisationResult nelderMead (const std::function< real(ArrayRef< const real >)> &functionToMinimize, ArrayRef< const real > initialGuess, real minimumRelativeSimplexLength=1e-8, int maxSteps=10'000)
 Derivative-free downhill simplex optimisation. More...
 
std::unique_ptr< BoxDeformation > buildBoxDeformation (const Matrix3x3 &initialBox, DDRole ddRole, NumRanks numRanks, MPI_Comm communicator, const t_inputrec &inputrec)
 Factory function for box deformation module. More...
 
void setBoxDeformationFlowMatrix (const matrix boxDeformationVelocity, const matrix box, matrix flowMatrix)
 Set a matrix for computing the flow velocity at coordinates. More...
 
static CheckpointSignal convertToCheckpointSignal (signed char sig)
 Convert signed char (as used by SimulationSignal) to CheckpointSignal enum. More...
 
static void clear_constraint_quantity_nonlocal (const gmx_domdec_t &dd, ArrayRef< RVec > q)
 Clears constraint quantities for atoms in nonlocal region.
 
void too_many_constraint_warnings (ConstraintAlgorithm eConstrAlg, int warncount)
 Generate a fatal error because of too many LINCS/SETTLE warnings.
 
static void write_constr_pdb (const char *fn, const char *title, const gmx_mtop_t &mtop, int start, int homenr, const t_commrec *cr, ArrayRef< const RVec > x, const matrix box)
 Writes out coordinates.
 
static void dump_confs (FILE *log, int64_t step, const gmx_mtop_t &mtop, int start, int homenr, const t_commrec *cr, ArrayRef< const RVec > x, ArrayRef< const RVec > xprime, const matrix box)
 Writes out domain contents to help diagnose crashes.
 
FlexibleConstraintTreatment flexibleConstraintTreatment (bool haveDynamicsIntegrator)
 Returns the flexible constraint treatment depending on whether the integrator is dynamic.
 
static ListOfLists< int > makeAtomsToConstraintsList (int numAtoms, ArrayRef< const InteractionList > ilists, ArrayRef< const t_iparams > iparams, FlexibleConstraintTreatment flexibleConstraintTreatment)
 Returns a block struct to go from atoms to constraints. More...
 
ListOfLists< int > make_at2con (int numAtoms, ArrayRef< const InteractionList > ilist, ArrayRef< const t_iparams > iparams, FlexibleConstraintTreatment flexibleConstraintTreatment)
 Returns a ListOfLists object to go from atoms to constraints. More...
 
ListOfLists< int > make_at2con (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams, FlexibleConstraintTreatment flexibleConstraintTreatment)
 Returns a ListOfLists object to go from atoms to constraints. More...
 
int countFlexibleConstraints (ArrayRef< const InteractionList > ilist, ArrayRef< const t_iparams > iparams)
 Return the number of flexible constraints in the ilist and iparams.
 
static std::vector< int > make_at2settle (int natoms, const InteractionList &ilist)
 Returns the index of the settle to which each atom belongs.
 
static std::vector
< ListOfLists< int > > 
makeAtomToConstraintMappings (const gmx_mtop_t &mtop, FlexibleConstraintTreatment flexibleConstraintTreatment)
 Makes a per-moleculetype container of mappings from atom indices to constraint indices. More...
 
bool hasTriangleConstraints (const gmx_mtop_t &mtop, FlexibleConstraintTreatment flexibleConstraintTreatment)
 Returns True if there is at least one triangular constraint.
 
void do_constrain_first (FILE *log, gmx::Constraints *constr, const t_inputrec &inputrec, int numAtoms, int numHomeAtoms, ArrayRefWithPadding< RVec > x, ArrayRefWithPadding< RVec > v, const matrix box, real lambda)
 Constrain the initial coordinates and velocities.
 
void constrain_velocities (gmx::Constraints *constr, bool computeRmsd, int64_t step, t_state *state, real *dhdlambda, bool computeVirial, tensor constraintsVirial)
 Constrain the velocities only. More...
 
void constrain_coordinates (gmx::Constraints *constr, bool computeRmsd, int64_t step, t_state *state, ArrayRefWithPadding< RVec > xp, real *dhdlambda, bool computeVirial, tensor constraintsVirial)
 Constrain the coordinates. More...
 
static bool isConstraintFlexible (ArrayRef< const t_iparams > iparams, int iparamsIndex)
 Returns whether constraint with parameter iparamsIndex is a flexible constraint.
 
const int * constr_iatomptr (gmx::ArrayRef< const int > iatom_constr, gmx::ArrayRef< const int > iatom_constrnc, int con)
 Returns the constraint iatoms for a constraint number con which comes from a list where F_CONSTR and F_CONSTRNC constraints are concatenated.
 
static void constr_recur (const ListOfLists< int > &at2con, const InteractionLists &ilist, gmx::ArrayRef< const t_iparams > iparams, gmx_bool bTopB, int at, int depth, int nc, ArrayRef< int > path, real r0, real r1, real *r2max, int *count)
 Recursing function to help find all adjacent constraints.
 
static real constr_r_max_moltype (const gmx_moltype_t *molt, gmx::ArrayRef< const t_iparams > iparams, const t_inputrec *ir)
 Find the interaction radius needed for constraints for this molecule type.
 
real constr_r_max (const MDLogger &mdlog, const gmx_mtop_t *mtop, const t_inputrec *ir)
 Returns an estimate of the maximum distance between atoms required for LINCS.
 
real calculateAcceptanceWeight (LambdaWeightCalculation calculationMode, real lambdaEnergyDifference)
 Calculates the acceptance weight for a lambda state transition. More...
 
void do_force (FILE *log, const t_commrec *cr, const gmx_multisim_t *ms, const t_inputrec &inputrec, const MDModulesNotifiers &mdModulesNotifiers, Awh *awh, gmx_enfrot *enforcedRotation, ImdSession *imdSession, pull_t *pull_work, int64_t step, t_nrnb *nrnb, gmx_wallcycle *wcycle, const gmx_localtop_t *top, const matrix box, ArrayRefWithPadding< RVec > coordinates, ArrayRef< RVec > velocities, const history_t *hist, ForceBuffersView *force, tensor vir_force, const t_mdatoms *mdatoms, gmx_enerdata_t *enerd, ArrayRef< const real > lambda, t_forcerec *fr, const MdrunScheduleWorkload &runScheduleWork, VirtualSitesHandler *vsite, rvec mu_tot, double t, gmx_edsam *ed, CpuPpLongRangeNonbondeds *longRangeNonbondeds, const DDBalanceRegionHandler &ddBalanceRegionHandler)
 
gmx::EnumerationArray
< FreeEnergyPerturbationCouplingType,
real
currentLambdas (int64_t step, const t_lambda &fepvals, int currentLambdaState)
 Evaluate the current lambdas. More...
 
void launchForceReductionKernel (int numAtoms, int atomStart, bool addRvecForce, bool accumulate, const DeviceBuffer< Float3 > d_nbnxmForceToAdd, const DeviceBuffer< Float3 > d_rvecForceToAdd, DeviceBuffer< Float3 > d_baseForce, DeviceBuffer< int > d_cell, const DeviceStream &deviceStream, DeviceBuffer< uint64_t > d_forcesReadyNvshmemFlags, const uint64_t forcesReadyNvshmemFlagsCounter)
 Backend-specific function to launch GPU Force Reduction kernel. More...
 
template<bool addRvecForce, bool accumulateForce>
static auto reduceKernel (const Float3 *__restrict__ gm_nbnxmForce, const Float3 *__restrict__ gm_rvecForceToAdd, Float3 *__restrict__ gm_forceTotal, const int *__restrict__ gm_cell, const int atomStart)
 Function returning the force reduction kernel lambda.
 
template<bool addRvecForce, bool accumulateForce>
static void launchReductionKernel_ (const int numAtoms, const int atomStart, const DeviceBuffer< Float3 > &d_nbnxmForce, const DeviceBuffer< Float3 > &d_rvecForceToAdd, DeviceBuffer< Float3 > &d_forceTotal, const DeviceBuffer< int > &d_cell, const DeviceStream &deviceStream)
 Force reduction SYCL kernel launch code.
 
void launchLeapFrogKernel (int numAtoms, DeviceBuffer< Float3 > d_x, DeviceBuffer< Float3 > d_x0, DeviceBuffer< Float3 > d_v, DeviceBuffer< Float3 > d_f, DeviceBuffer< float > d_inverseMasses, float dt, bool doTemperatureScaling, int numTempScaleValues, DeviceBuffer< unsigned short > d_tempScaleGroups, DeviceBuffer< float > d_lambdas, ParrinelloRahmanVelocityScaling parrinelloRahmanVelocityScaling, Float3 prVelocityScalingMatrixDiagonal, const DeviceStream &deviceStream)
 Backend-specific function to launch GPU Leap Frog kernel. More...
 
template<NumTempScaleValues numTempScaleValues, ParrinelloRahmanVelocityScaling parrinelloRahmanVelocityScaling>
auto leapFrogKernel (Float3 *__restrict__ gm_x, Float3 *__restrict__ gm_x0, Float3 *__restrict__ gm_v, const Float3 *__restrict__ gm_f, const float *__restrict__ gm_inverseMasses, float dt, const float *__restrict__ gm_lambdas, const unsigned short *__restrict__ gm_tempScaleGroups, Float3 prVelocityScalingMatrixDiagonal)
 Main kernel for the Leap-Frog integrator. More...
 
template<NumTempScaleValues numTempScaleValues, ParrinelloRahmanVelocityScaling parrinelloRahmanVelocityScaling, class... Args>
static void launchLeapFrogKernel (const DeviceStream &deviceStream, int numAtoms, Args &&...args)
 Leap Frog SYCL kernel launch code.
 
static NumTempScaleValues getTempScalingType (bool doTemperatureScaling, int numTempScaleValues)
 Convert doTemperatureScaling and numTempScaleValues to NumTempScaleValues.
 
template<class... Args>
static void launchLeapFrogKernel (NumTempScaleValues tempScalingType, ParrinelloRahmanVelocityScaling parrinelloRahmanVelocityScaling, Args &&...args)
 Select templated kernel and launch it.
 
real lincs_rmsd (const Lincs *lincsd)
 Return the RMSD of the constraint.
 
static void lincs_matrix_expand (const Lincs &lincsd, const Task &li_task, gmx::ArrayRef< const real > blcc, gmx::ArrayRef< real > rhs1, gmx::ArrayRef< real > rhs2, gmx::ArrayRef< real > sol)
 Do a set of nrec LINCS matrix multiplications. More...
 
static void lincs_update_atoms_noind (int ncons, gmx::ArrayRef< const AtomPair > atoms, real preFactor, gmx::ArrayRef< const real > fac, gmx::ArrayRef< const gmx::RVec > r, gmx::ArrayRef< const real > invmass, rvec *x)
 Update atomic coordinates when an index is not required.
 
static void lincs_update_atoms_ind (gmx::ArrayRef< const int > ind, gmx::ArrayRef< const AtomPair > atoms, real preFactor, gmx::ArrayRef< const real > fac, gmx::ArrayRef< const gmx::RVec > r, gmx::ArrayRef< const real > invmass, rvec *x)
 Update atomic coordinates when an index is required.
 
static void lincs_update_atoms (Lincs *li, int th, real preFactor, gmx::ArrayRef< const real > fac, gmx::ArrayRef< const gmx::RVec > r, gmx::ArrayRef< const real > invmass, rvec *x)
 Update coordinates for atoms.
 
static void do_lincsp (ArrayRefWithPadding< const RVec > xPadded, ArrayRefWithPadding< RVec > fPadded, ArrayRef< RVec > fp, t_pbc *pbc, Lincs *lincsd, int th, ArrayRef< const real > invmass, ConstraintVariable econq, bool bCalcDHDL, bool bCalcVir, tensor rmdf)
 LINCS projection, works on derivatives of the coordinates.
 
static gmx_unused void calc_dist_iter (int b0, int b1, gmx::ArrayRef< const AtomPair > atoms, const rvec *gmx_restrict xp, const real *gmx_restrict bllen, const real *gmx_restrict blc, const t_pbc *pbc, real wfac, real *gmx_restrict rhs, real *gmx_restrict sol, bool *bWarn)
 Determine the distances and right-hand side for the next iteration.
 
static void do_lincs (ArrayRefWithPadding< const RVec > xPadded, ArrayRefWithPadding< RVec > xpPadded, const matrix box, t_pbc *pbc, Lincs *lincsd, int th, ArrayRef< const real > invmass, const t_commrec *cr, bool bCalcDHDL, real wangle, bool *bWarn, real invdt, ArrayRef< RVec > vRef, bool bCalcVir, tensor vir_r_m_dr, gmx_wallcycle *wcycle)
 Implements LINCS constraining.
 
static void set_lincs_matrix_task (Lincs *li, Task *li_task, ArrayRef< const real > invmass, int *ncc_triangle, int *nCrossTaskTriangles)
 Sets the elements in the LINCS matrix for task task.
 
static void set_lincs_matrix (Lincs *li, ArrayRef< const real > invmass, real lambda)
 Sets the elements in the LINCS matrix.
 
int count_triangle_constraints (const InteractionLists &ilist, const ListOfLists< int > &at2con)
 Counts the number of constraint triangles, i.e. triplets of atoms connected by three constraints. More...
 
static bool more_than_two_sequential_constraints (const InteractionLists &ilist, const ListOfLists< int > &at2con)
 Finds sequences of sequential constraints.
 
Lincsinit_lincs (FILE *fplog, const gmx_mtop_t &mtop, int nflexcon_global, ArrayRef< const ListOfLists< int >> atomsToConstraintsPerMolType, bool bPLINCS, int nIter, int nProjOrder, ObservablesReducerBuilder *observablesReducerBuilder)
 Initializes and returns the lincs data struct.
 
void done_lincs (Lincs *li)
 Destructs the lincs object when it is not nullptr.
 
static void lincs_thread_setup (Lincs *li, int natoms)
 Sets up the work division over the threads.
 
static void assign_constraint (Lincs *li, int constraint_index, int a1, int a2, real lenA, real lenB, const ListOfLists< int > &at2con)
 Assign a constraint.
 
static void check_assign_connected (Lincs *li, gmx::ArrayRef< const int > iatom, const InteractionDefinitions &idef, bool bDynamics, int a1, int a2, const ListOfLists< int > &at2con)
 Check if constraint with topology index constraint_index is connected to other constraints, and if so add those connected constraints to our task.
 
static void check_assign_triangle (Lincs *li, gmx::ArrayRef< const int > iatom, const InteractionDefinitions &idef, bool bDynamics, int constraint_index, int a1, int a2, const ListOfLists< int > &at2con)
 Check if constraint with topology index constraint_index is involved in a constraint triangle, and if so add the other two constraints in the triangle to our task.
 
static void set_matrix_indices (Lincs *li, const Task &li_task, const ListOfLists< int > &at2con, bool bSortMatrix)
 Sets matrix indices.
 
void set_lincs (const InteractionDefinitions &idef, int numAtoms, ArrayRef< const real > invmass, real lambda, bool bDynamics, const t_commrec *cr, Lincs *li)
 Initialize lincs stuff.
 
static void lincs_warning (gmx_domdec_t *dd, ArrayRef< const RVec > x, ArrayRef< const RVec > xprime, t_pbc *pbc, int ncons, gmx::ArrayRef< const AtomPair > atoms, gmx::ArrayRef< const real > bllen, real wangle, int maxwarn, int *warncount)
 Issues a warning when LINCS constraints cannot be satisfied.
 
static LincsDeviations makeLincsDeviations (const Lincs &lincsd, ArrayRef< const RVec > x, const t_pbc *pbc)
 Determine how well the constraints have been satisfied.
 
bool constrain_lincs (bool computeRmsd, const t_inputrec &ir, int64_t step, Lincs *lincsd, ArrayRef< const real > invmass, const t_commrec *cr, const gmx_multisim_t *ms, ArrayRefWithPadding< const RVec > x, ArrayRefWithPadding< RVec > xprime, ArrayRef< RVec > min_proj, const matrix box, t_pbc *pbc, bool hasMassPerturbed, real lambda, real *dvdlambda, real invdt, ArrayRef< RVec > v, bool bCalcVir, tensor vir_r_m_dr, ConstraintVariable econq, t_nrnb *nrnb, int maxwarn, int *warncount, gmx_wallcycle *wcycle)
 Applies LINCS constraints. More...
 
void addWithCoupled (ArrayRef< const int > iatoms, const int stride, const gmx::ListOfLists< AtomsAdjacencyListElement > &atomsAdjacencyList, ArrayRef< int > splitMap, const int c, int *currentMapIndex)
 Add constraint to splitMap with all constraints coupled to it. More...
 
void launchLincsGpuKernel (LincsGpuKernelParameters *kernelParams, const DeviceBuffer< Float3 > &d_x, DeviceBuffer< Float3 > d_xp, bool updateVelocities, DeviceBuffer< Float3 > d_v, real invdt, bool computeVirial, const DeviceStream &deviceStream)
 Backend-specific function to launch LINCS kernel. More...
 
template<bool updateVelocities, bool computeVirial, bool haveCoupledConstraints>
auto lincsKernel (sycl::handler &cgh, const int numConstraintsThreads, const AtomPair *__restrict__ gm_constraints, const float *__restrict__ gm_constraintsTargetLengths, const int *__restrict__ gm_coupledConstraintsCounts, const int *__restrict__ gm_coupledConstraintsIndices, const float *__restrict__ gm_massFactors, float *__restrict__ gm_matrixA, const float *__restrict__ gm_inverseMasses, const int numIterations, const int expansionOrder, const Float3 *__restrict__ gm_x, Float3 *__restrict__ gm_xp, const float invdt, Float3 *__restrict__ gm_v, float *__restrict__ gm_virialScaled, PbcAiuc pbcAiuc)
 Main kernel for LINCS constraints. More...
 
template<bool updateVelocities, bool computeVirial, bool haveCoupledConstraints, class... Args>
static void launchLincsKernel (const DeviceStream &deviceStream, const int numConstraintsThreads, Args &&...args)
 
template<class... Args>
static void launchLincsKernel (bool updateVelocities, bool computeVirial, bool haveCoupledConstraints, Args &&...args)
 Select templated kernel and launch it.
 
template<typename... Args>
std::unique_ptr< ConstraintsmakeConstraints (const gmx_mtop_t &mtop, const t_inputrec &ir, pull_t *pull_work, bool havePullConstraintsWork, bool doEssentialDynamics, Args &&...args)
 Factory function for Constraints. More...
 
std::unique_ptr< MDAtomsmakeMDAtoms (FILE *fp, const gmx_mtop_t &mtop, const t_inputrec &ir, bool useGpuForPme)
 Builder function for MdAtomsWrapper. More...
 
static ResetSignal convertToResetSignal (signed char sig)
 Convert signed char (as used by SimulationSignal) to ResetSignal enum. More...
 
static void initializeProjectionMatrix (const real invmO, const real invmH, const real dOH, const real dHH, matrix inverseCouplingMatrix)
 Initializes a projection matrix. More...
 
SettleParameters settleParameters (real mO, real mH, real invmO, real invmH, real dOH, real dHH)
 Computes and returns settle parameters. More...
 
void settle_proj (const SettleData &settled, ConstraintVariable econq, int nsettle, const int iatoms[], const t_pbc *pbc,ArrayRef< const RVec > x, ArrayRef< RVec > der, ArrayRef< RVec > derp, int CalcVirAtomEnd, tensor vir_r_m_dder)
 Analytical algorithm to subtract the components of derivatives of coordinates working on settle type constraint.
 
template<typename T , typename TypeBool , int packSize, typename TypePbc , bool bCorrectVelocity, bool bCalcVirial>
static void settleTemplate (const SettleData &settled, int settleStart, int settleEnd, const TypePbc pbc, const real *x, real *xprime, real invdt, real *gmx_restrict v, tensor vir_r_m_dr, bool *bErrorHasOccurred)
 The actual settle code, templated for real/SimdReal and for optimization.
 
template<typename T , typename TypeBool , int packSize, typename TypePbc >
static void settleTemplateWrapper (const SettleData &settled, int nthread, int thread, TypePbc pbc, const real x[], real xprime[], real invdt, real *v, bool bCalcVirial, tensor vir_r_m_dr, bool *bErrorHasOccurred)
 Wrapper template function that divides the settles over threads and instantiates the core template with instantiated booleans.
 
void csettle (const SettleData &settled,int nthread,int thread,const t_pbc *pbc,ArrayRefWithPadding< const RVec > x,ArrayRefWithPadding< RVec > xprime,real invdt,ArrayRefWithPadding< RVec > v,bool bCalcVirial,tensor vir_r_m_dr,bool *bErrorHasOccurred)
 Constrain coordinates using SETTLE. Can be called on any number of threads.
 
void launchSettleGpuKernel (int numSettles, const DeviceBuffer< WaterMolecule > &d_atomIds, const SettleParameters &settleParameters, const DeviceBuffer< Float3 > &d_x, DeviceBuffer< Float3 > d_xp, bool updateVelocities, DeviceBuffer< Float3 > d_v, real invdt, bool computeVirial, DeviceBuffer< float > d_virialScaled, const PbcAiuc &pbcAiuc, const DeviceStream &deviceStream)
 Apply SETTLE. More...
 
template<bool updateVelocities, bool computeVirial>
auto settleKernel (sycl::handler &cgh, const int numSettles, const WaterMolecule *__restrict__ gm_settles, SettleParameters pars, const Float3 *__restrict__ gm_x, Float3 *__restrict__ gm_xp, float invdt, Float3 *__restrict__ gm_v, float *__restrict__ gm_virialScaled, PbcAiuc pbcAiuc)
 Function returning the SETTLE kernel lambda.
 
template<bool updateVelocities, bool computeVirial, class... Args>
static void launchSettleKernel (const DeviceStream &deviceStream, int numSettles, Args &&...args)
 SETTLE SYCL kernel launch code.
 
template<class... Args>
static void launchSettleKernel (bool updateVelocities, bool computeVirial, Args &&...args)
 Select templated kernel and launch it.
 
static int pcomp (const void *p1, const void *p2)
 Compares sort blocks.
 
static void pr_sortblock (FILE *fp, const char *title, gmx::ArrayRef< const t_sortblock > sb)
 Prints sortblocks.
 
static void resizeLagrangianData (shakedata *shaked, int ncons)
 Reallocates a vector.
 
void make_shake_sblock_serial (shakedata *shaked, InteractionDefinitions *idef, int numAtoms)
 Make SHAKE blocks when not using DD.
 
void make_shake_sblock_dd (shakedata *shaked, const InteractionList &ilcon)
 Make SHAKE blocks when using DD.
 
void cshake (const int iatom[], int ncon, int *nnit, int maxnit, ArrayRef< const real > constraint_distance_squared, ArrayRef< RVec > positions, const t_pbc *pbc, ArrayRef< const RVec > initial_displacements, ArrayRef< const real > half_of_reduced_mass, real omega, ArrayRef< const real > invmass, ArrayRef< const real > distance_squared_tolerance, ArrayRef< real > scaled_lagrange_multiplier, int *nerror)
 Inner kernel for SHAKE constraints. More...
 
static void crattle (const int iatom[], int ncon, int *nnit, int maxnit, ArrayRef< const real > constraint_distance_squared, ArrayRef< RVec > vp, ArrayRef< const RVec > rij, ArrayRef< const real > m2, real omega, ArrayRef< const real > invmass, ArrayRef< const real > distance_squared_tolerance, ArrayRef< real > scaled_lagrange_multiplier, int *nerror, real invdt)
 Implements RATTLE (ie. SHAKE for velocity verlet integrators)
 
static int vec_shakef (FILE *fplog, shakedata *shaked, ArrayRef< const real > invmass, int ncon, ArrayRef< const t_iparams > ip, const int *iatom, real tol, ArrayRef< const RVec > x, ArrayRef< RVec > prime, const t_pbc *pbc, real omega, bool bFEP, real lambda, ArrayRef< real > scaled_lagrange_multiplier, real invdt, ArrayRef< RVec > v, bool bCalcVir, tensor vir_r_m_dr, ConstraintVariable econq)
 Applies SHAKE.
 
static void check_cons (FILE *log, int nc, ArrayRef< const RVec > x, ArrayRef< const RVec > prime, ArrayRef< const RVec > v, const t_pbc *pbc, ArrayRef< const t_iparams > ip, const int *iatom, ArrayRef< const real > invmass, ConstraintVariable econq)
 Check that constraints are satisfied.
 
static bool bshakef (FILE *log, shakedata *shaked, ArrayRef< const real > invmass, const InteractionDefinitions &idef, const t_inputrec &ir, ArrayRef< const RVec > x_s, ArrayRef< RVec > prime, const t_pbc *pbc, t_nrnb *nrnb, real lambda, real *dvdlambda, real invdt, ArrayRef< RVec > v, bool bCalcVir, tensor vir_r_m_dr, bool bDumpOnError, ConstraintVariable econq)
 Applies SHAKE.
 
bool constrain_shake (FILE *log,shakedata *shaked,gmx::ArrayRef< const real > invmass,const InteractionDefinitions &idef,const t_inputrec &ir,ArrayRef< const RVec > x_s,ArrayRef< RVec > xprime,ArrayRef< RVec > vprime,const t_pbc *pbc,t_nrnb *nrnb,real lambda,real *dvdlambda,real invdt,ArrayRef< RVec > v,bool bCalcVir,tensor vir_r_m_dr,bool bDumpOnError,ConstraintVariable econq)
 Shake all the atoms blockwise. It is assumed that all the constraints in the idef->shakes field are sorted, to ascending block nr. The sblock array points into the idef->shakes.iatoms field, with block 0 starting at sblock[0] and running to ( < ) sblock[1], block n running from sblock[n] to sblock[n+1]. Array sblock should be large enough. Return TRUE when OK, FALSE when shake-error.
 
static void sum_forces (ArrayRef< RVec > f, ArrayRef< const RVec > forceToAdd)
 
static void calc_virial (int start, int homenr, const rvec x[], const ForceWithShiftForces &forceWithShiftForces, tensor vir_part, const matrix box, t_nrnb *nrnb, const t_forcerec *fr, PbcType pbcType)
 
static void pull_potential_wrapper (const t_commrec *cr, const t_inputrec &ir, const matrix box, ArrayRef< const RVec > x, const t_mdatoms *mdatoms, gmx_enerdata_t *enerd, pull_t *pull_work, const real *lambda, double t, gmx_wallcycle *wcycle)
 
static void pme_receive_force_ener (t_forcerec *fr, const t_commrec *cr, ForceWithVirial *forceWithVirial, gmx_enerdata_t *enerd, bool useGpuPmePpComms, bool receivePmeForceToGpu, gmx_wallcycle *wcycle)
 
static void print_large_forces (FILE *fp, const t_mdatoms *md, const t_commrec *cr, int64_t step, real forceTolerance, ArrayRef< const RVec > x, ArrayRef< const RVec > f)
 
static void postProcessForceWithShiftForces (t_nrnb *nrnb, gmx_wallcycle *wcycle, const matrix box, ArrayRef< const RVec > x, ForceOutputs *forceOutputs, tensor vir_force, const t_mdatoms &mdatoms, const t_forcerec &fr, VirtualSitesHandler *vsite, const StepWorkload &stepWork)
 When necessary, spreads forces on vsites and computes the virial for forceOutputs->forceWithShiftForces()
 
static void postProcessForces (const t_commrec *cr, int64_t step, t_nrnb *nrnb, gmx_wallcycle *wcycle, const matrix box, ArrayRef< const RVec > x, ForceOutputs *forceOutputs, tensor vir_force, const t_mdatoms *mdatoms, const t_forcerec *fr, VirtualSitesHandler *vsite, const StepWorkload &stepWork)
 Spread, compute virial for and sum forces, when necessary.
 
static void do_nb_verlet (t_forcerec *fr, const interaction_const_t *ic, gmx_enerdata_t *enerd, const StepWorkload &stepWork, const InteractionLocality ilocality, const int clearF, const int64_t step, t_nrnb *nrnb, gmx_wallcycle *wcycle)
 
static void clearRVecs (ArrayRef< RVec > v, const bool useOpenmpThreading)
 
static real averageKineticEnergyEstimate (const t_grpopts &groupOptions)
 Return an estimate of the average kinetic energy or 0 when unreliable. More...
 
static void checkPotentialEnergyValidity (int64_t step, const gmx_enerdata_t &enerd, const t_inputrec &inputrec)
 This routine checks that the potential energy is finite. More...
 
static void computeSpecialForces (FILE *fplog, const t_commrec *cr, const t_inputrec &inputrec, Awh *awh, gmx_enfrot *enforcedRotation, ImdSession *imdSession, pull_t *pull_work, int64_t step, double t, gmx_wallcycle *wcycle, ForceProviders *forceProviders, const matrix box, ArrayRef< const RVec > x, const t_mdatoms *mdatoms, ArrayRef< const real > lambda, const StepWorkload &stepWork, ForceWithVirial *forceWithVirialMtsLevel0, ForceWithVirial *forceWithVirialMtsLevel1, gmx_enerdata_t *enerd, gmx_edsam *ed, bool didNeighborSearch)
 Compute forces and/or energies for special algorithms. More...
 
static void launchPmeGpuSpread (gmx_pme_t *pmedata, const matrix box, const StepWorkload &stepWork, GpuEventSynchronizer *xReadyOnDevice, const real lambdaQ, bool useMdGpuGraph, gmx_wallcycle *wcycle)
 Launch the prepare_step and spread stages of PME GPU. More...
 
static void launchPmeGpuFftAndGather (gmx_pme_t *pmedata, const real lambdaQ, gmx_wallcycle *wcycle, const StepWorkload &stepWork)
 Launch the FFT and gather stages of PME GPU. More...
 
static void pmeGpuWaitAndReduce (gmx_pme_t *pme, const StepWorkload &stepWork, gmx_wallcycle *wcycle, ForceWithVirial *forceWithVirial, gmx_enerdata_t *enerd, const real lambdaQ)
 Blocks until PME GPU tasks are completed, and gets the output forces and virial/energy (if they were to be computed). More...
 
static void alternatePmeNbGpuWaitReduce (nonbonded_verlet_t *nbv, gmx_pme_t *pmedata, ForceOutputs *forceOutputsNonbonded, ForceOutputs *forceOutputsPme, gmx_enerdata_t *enerd, const real lambdaQ, const StepWorkload &stepWork, gmx_wallcycle *wcycle)
 Polling wait for either of the PME or nonbonded GPU tasks. More...
 
static ForceOutputs setupForceOutputs (ForceHelperBuffers *forceHelperBuffers, ArrayRefWithPadding< RVec > force, const DomainLifetimeWorkload &domainWork, const StepWorkload &stepWork, const bool havePpDomainDecomposition, gmx_wallcycle *wcycle)
 Set up the different force buffers; also does clearing. More...
 
static void launchGpuEndOfStepTasks (nonbonded_verlet_t *nbv, ListedForcesGpu *listedForcesGpu, gmx_pme_t *pmedata, gmx_enerdata_t *enerd, const MdrunScheduleWorkload &runScheduleWork, int64_t step, gmx_wallcycle *wcycle)
 
static int getExpectedLocalXReadyOnDeviceConsumptionCount (const SimulationWorkload &simulationWork, const StepWorkload &stepWork, const DomainLifetimeWorkload &domainWork, bool pmeSendCoordinatesFromGpu)
 Compute the number of times the "local coordinates ready on device" GPU event will be used as a synchronization point. More...
 
static int getExpectedLocalFReadyOnDeviceConsumptionCount (const SimulationWorkload &simulationWork, const DomainLifetimeWorkload &domainWork, const StepWorkload &stepWork, bool useOrEmulateGpuNb, bool alternateGpuWait)
 Compute the number of times the "local forces ready on device" GPU event will be used as a synchronization point. More...
 
static void reduceAndUpdateMuTot (DipoleData *dipoleData, const t_commrec *cr, const bool haveFreeEnergy, ArrayRef< const real > lambda, rvec muTotal, const DDBalanceRegionHandler &ddBalanceRegionHandler)
 
static void combineMtsForces (const int numAtoms, ArrayRef< RVec > forceMtsLevel0, ArrayRef< RVec > forceMts, const real mtsFactor)
 Combines MTS level0 and level1 force buffers into a full and MTS-combined force buffer. More...
 
static void setupLocalGpuForceReduction (const MdrunScheduleWorkload &runScheduleWork, nonbonded_verlet_t *nbv, StatePropagatorDataGpu *stateGpu, GpuForceReduction *gpuForceReduction, PmePpCommGpu *pmePpCommGpu, const gmx_pme_t *pmedata, const gmx_domdec_t *dd)
 Setup for the local GPU force reduction: reinitialization plus the registration of forces and dependencies. More...
 
static void setupNonLocalGpuForceReduction (const MdrunScheduleWorkload &runScheduleWork, nonbonded_verlet_t *nbv, StatePropagatorDataGpu *stateGpu, GpuForceReduction *gpuForceReduction, const gmx_domdec_t *dd)
 Setup for the non-local GPU force reduction: reinitialization plus the registration of forces and dependencies. More...
 
static int getLocalAtomCount (const gmx_domdec_t *dd, const t_mdatoms &mdatoms, bool havePPDomainDecomposition)
 Return the number of local atoms.
 
static void doPairSearch (const t_commrec *cr, const t_inputrec &inputrec, const MDModulesNotifiers &mdModulesNotifiers, int64_t step, t_nrnb *nrnb, gmx_wallcycle *wcycle, const gmx_localtop_t &top, const matrix box, ArrayRefWithPadding< RVec > x, ArrayRef< RVec > v, const t_mdatoms &mdatoms, t_forcerec *fr, const MdrunScheduleWorkload &runScheduleWork)
 Does pair search and closely related activities required on search steps.
 
static StopSignal convertToStopSignal (signed char sig)
 Convert signed char (as used by SimulationSignal) to StopSignal enum. More...
 
void launchScaleCoordinatesKernel (int numAtoms, DeviceBuffer< Float3 > d_coordinates, const ScalingMatrix &mu, const DeviceStream &deviceStream)
 Launches positions of velocities scaling kernel. More...
 
static auto scaleKernel (Float3 *gm_x, const ScalingMatrix &scalingMatrix)
 Function returning the scaling kernel lambda.
 
static bool hasFlexibleConstraints (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams)
 Returns whether moltype contains flexible constraints.
 
static bool hasIncompatibleVsites (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams)
 Returns whether moltype has incompatible vsites. More...
 
static InteractionList jointConstraintList (const gmx_moltype_t &moltype)
 Returns a merged list with constraints of all types.
 
static AtomIndexExtremes vsiteConstructRange (int a, const gmx_moltype_t &moltype)
 Returns the range of constructing atom for vsite with atom index a.
 
static AtomIndexExtremes constraintAtomRange (int a, const ListOfLists< int > &at2con, const InteractionList &ilistConstraints)
 Returns the range of atoms constrained to atom a (including a itself)
 
static std::vector< bool > buildIsParticleVsite (const gmx_moltype_t &moltype)
 Returns a list that tells whether atoms in moltype are vsites.
 
static std::variant< int,
IncompatibilityReasons
detectGroup (int firstAtom, const gmx_moltype_t &moltype, const ListOfLists< int > &at2con, const InteractionList &ilistConstraints)
 Returns the size of the update group starting at firstAtom or an incompatibility reason.
 
static std::variant
< RangePartitioning,
IncompatibilityReasons
makeUpdateGroupingsPerMoleculeType (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams)
 Returns a list of update groups for moltype or an incompatibility reason.
 
std::variant< std::vector
< RangePartitioning >
, std::string > 
makeUpdateGroupingsPerMoleculeType (const gmx_mtop_t &mtop)
 Returns a vector with update groups for each moleculetype in mtop or an error string when the criteria (see below) are not satisfied. More...
 
static std::unordered_multimap
< int, int > 
getAngleIndices (const gmx_moltype_t &moltype)
 Returns a map of angles ilist.iatoms indices with the middle atom as key.
 
template<int numPartnerAtoms>
static real constraintGroupRadius (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams, const int centralAtom, const ListOfLists< int > &at2con, const std::unordered_multimap< int, int > &angleIndices, const real constraintLength, const real temperature)
 When possible, computes the maximum radius of constrained atom in an update group. More...
 
static real computeMaxUpdateGroupRadius (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams, const RangePartitioning &updateGrouping, real temperature)
 Returns the maximum update group radius for moltype.
 
real computeMaxUpdateGroupRadius (const gmx_mtop_t &mtop, ArrayRef< const RangePartitioning > updateGroupingPerMoleculeType, real temperature)
 Returns the maximum update group radius. More...
 
bool systemHasConstraintsOrVsites (const gmx_mtop_t &mtop)
 Returns whether mtop contains any constraints and/or vsites. More...
 
UpdateGroups makeUpdateGroups (const gmx::MDLogger &mdlog, std::vector< RangePartitioning > &&updateGroupingPerMoleculeType, real maxUpdateGroupRadius, bool doRerun, bool useDomainDecomposition, bool systemHasConstraintsOrVsites, real cutoffMargin)
 Builder for update groups. More...
 
static int vsiteIlistNrCount (ArrayRef< const InteractionList > ilist)
 Returns the sum of the vsite ilist sizes over all vsite types. More...
 
static int pbc_rvec_sub (const t_pbc *pbc, const rvec xi, const rvec xj, rvec dx)
 Computes the distance between xi and xj, pbc is used when pbc!=nullptr.
 
static real inverseNorm (const rvec x)
 Returns the 1/norm(x)
 
static PbcMode getPbcMode (const t_pbc *pbcPtr)
 Returns the PBC mode based on the system PBC and vsite properties. More...
 
template<VSiteCalculatePosition calculatePosition, VSiteCalculateVelocity calculateVelocity>
static void construct_vsites_thread (ArrayRef< RVec > x, ArrayRef< RVec > v, ArrayRef< const t_iparams > ip, ArrayRef< const InteractionList > ilist, const t_pbc *pbc_null)
 Executes the vsite construction task for a single thread. More...
 
template<VSiteCalculatePosition calculatePosition, VSiteCalculateVelocity calculateVelocity>
static void construct_vsites (const ThreadingInfo *threadingInfo, ArrayRef< RVec > x, ArrayRef< RVec > v, ArrayRef< const t_iparams > ip, ArrayRef< const InteractionList > ilist, const DomainInfo &domainInfo, const matrix box)
 Dispatch the vsite construction tasks for all threads. More...
 
void constructVirtualSites (ArrayRef< RVec > x, ArrayRef< const t_iparams > ip, ArrayRef< const InteractionList > ilist)
 Create positions of vsite atoms based for the local system. More...
 
static int vsite_count (ArrayRef< const InteractionList > ilist, int ftype)
 Returns the number of virtual sites in the interaction list, for VSITEN the number of atoms.
 
template<VirialHandling virialHandling>
static void spreadForceForThread (ArrayRef< const RVec > x, ArrayRef< RVec > f, ArrayRef< RVec > fshift, matrix dxdf, ArrayRef< const t_iparams > ip, ArrayRef< const InteractionList > ilist, const t_pbc *pbc_null)
 Executes the force spreading task for a single thread.
 
static void spreadForceWrapper (ArrayRef< const RVec > x, ArrayRef< RVec > f, const VirialHandling virialHandling, ArrayRef< RVec > fshift, matrix dxdf, const bool clearDxdf, ArrayRef< const t_iparams > ip, ArrayRef< const InteractionList > ilist, const t_pbc *pbc_null)
 Wrapper function for calling the templated thread-local spread function.
 
static void clearTaskForceBufferUsedElements (InterdependentTask *idTask)
 Clears the task force buffer elements that are written by task idTask.
 
static std::vector< int > makeAtomToGroupMapping (const gmx::RangePartitioning &grouping)
 Returns the an array with group indices for each atom. More...
 
int countNonlinearVsites (const gmx_mtop_t &mtop)
 Return the number of non-linear virtual site constructions in the system.
 
int countInterUpdategroupVsites (const gmx_mtop_t &mtop, ArrayRef< const RangePartitioning > updateGroupingsPerMoleculeType)
 Return the number of virtual sites that cross update groups. More...
 
std::unique_ptr
< VirtualSitesHandler
makeVirtualSitesHandler (const gmx_mtop_t &mtop, const t_commrec *cr, PbcType pbcType, ArrayRef< const RangePartitioning > updateGroupingPerMoleculeType)
 Create the virtual site handler. More...
 
 iparams_ (mtop.ffparams.iparams)
 
static void flagAtom (InterdependentTask *idTask, const int atom, const int numThreads, const int numAtomsPerThread)
 Flag that atom atom which is home in another task, if it has not already been added before.
 
static void assignVsitesToThread (VsiteThread *tData, int thread, int nthread, int natperthread, gmx::ArrayRef< int > taskIndex, ArrayRef< const InteractionList > ilist, ArrayRef< const t_iparams > ip, ArrayRef< const ParticleType > ptype)
 Here we try to assign all vsites that are in our local range. More...
 
static void assignVsitesToSingleTask (VsiteThread *tData, int task, gmx::ArrayRef< const int > taskIndex, ArrayRef< const InteractionList > ilist, ArrayRef< const t_iparams > ip)
 Assign all vsites with taskIndex[]==task to task tData.
 
void constructVirtualSitesGlobal (const gmx_mtop_t &mtop, ArrayRef< RVec > x)
 Create positions of vsite atoms for the whole system assuming all molecules are wholex. More...
 
static bool is_multisim_option_set (int argc, const char *const argv[])
 Return whether the command-line parameter that will trigger a multi-simulation is set.
 
static DevelopmentFeatureFlags manageDevelopmentFeatures (const gmx::MDLogger &mdlog, const PmeRunMode pmeRunMode, const int numRanksPerSimulation, const int numPmeRanksPerSimulation, gmx::GpuAwareMpiStatus gpuAwareMpiStatus)
 Manage any development feature flag variables encountered. More...
 
static void threadMpiMdrunnerAccessBarrier ()
 Barrier for safe simultaneous thread access to mdrunner data. More...
 
static void mdrunner_start_fn (const void *arg)
 The callback used for running on spawned threads. More...
 
static bool gpuAccelerationOfNonbondedIsUseful (const MDLogger &mdlog, const t_inputrec &ir, const bool issueWarning, const bool doRerun)
 Return whether GPU acceleration of nonbondeds is supported with the given settings. More...
 
static gmx::LoggerOwner buildLogger (FILE *fplog, const bool isSimulationMainRank)
 Initializes the logger for mdrun.
 
static TaskTarget findTaskTarget (const char *optionString)
 Make a TaskTarget from an mdrun argument string.
 
static void finish_run (FILE *fplog, const gmx::MDLogger &mdlog, const t_commrec *cr, const t_inputrec &inputrec, t_nrnb nrnb[], gmx_wallcycle *wcycle, gmx_walltime_accounting_t walltime_accounting, nonbonded_verlet_t *nbv, const gmx_pme_t *pme, gmx_bool bWriteStat)
 Finish run, aggregate data to print performance info.
 
static bool localStateHasFillerParticles (const gmx_mtop_t &mtop, const t_inputrec &inputrec, const bool useDomainDecomposition, const bool haveSinglePPRank, const bool useGpuDirectHalo)
 Returns whether the run conditions permit the local state to have filler particles.
 
void applyLocalState (const SimulationInput &simulationInput, t_fileio *logfio, const t_commrec *cr, int *dd_nc, t_inputrec *ir, t_state *state, ObservablesHistory *observablesHistory, bool reproducibilityRequested, const MDModulesNotifiers &notifiers, gmx::ReadCheckpointDataHolder *modularSimulatorCheckpointData, bool useModularSimulator)
 Initialize local stateful simulation data. More...
 
SimulationInputHandle makeSimulationInput (const LegacyMdrunOptions &options)
 Direct the construction of a SimulationInput. More...
 
static void global_max (t_commrec *cr, int *n)
 Global max algorithm.
 
static real reactionFieldExclusionCorrection (gmx::ArrayRef< const gmx::RVec > x, const t_mdatoms &mdatoms, const interaction_const_t &ic, const int beginAtom)
 Computes and returns the RF exclusion energy for the last molecule starting at beginAtom.
 
int computeFepPeriod (const t_inputrec &inputrec, const ReplicaExchangeParameters &replExParams)
 Compute the period at which FEP calculation is performed. More...
 
std::tuple< StartingBehavior,
LogFilePtr
handleRestart (bool isSimulationMain, MPI_Comm communicator, const gmx_multisim_t *ms, AppendingBehavior appendingBehavior, int nfile, t_filenm fnm[])
 Handle startup of mdrun, particularly regarding -cpi and -append. More...
 
static void prepareLogFile (BinaryInformationSettings settings, FILE *fplog)
 Implements aspects of logfile handling common to opening either for writing or appending.
 
LogFilePtr openLogFile (const char *lognm, bool appendFiles)
 Open the log file for writing/appending. More...
 
void prepareLogAppending (FILE *fplog)
 Prepare to use the open log file when appending. More...
 
void closeLogFile (t_fileio *logfio)
 Close the log file.
 
template<class BasicMdspan >
constexpr std::enable_if_t
< BasicMdspan::is_always_contiguous(),
typename BasicMdspan::pointer > 
begin (const BasicMdspan &basicMdspan)
 Free begin function addressing memory of a contiguously laid out basic_mdspan. More...
 
template<class BasicMdspan >
constexpr std::enable_if_t
< BasicMdspan::is_always_contiguous(),
typename BasicMdspan::pointer > 
end (const BasicMdspan &basicMdspan)
 Free end function addressing memory of a contiguously laid out basic_mdspan. More...
 
template<class BasicMdspan >
constexpr BasicMdspan addElementwise (const BasicMdspan &span1, const BasicMdspan &span2)
 Elementwise addition.
 
template<class BasicMdspan >
constexpr BasicMdspan subtractElementwise (const BasicMdspan &span1, const BasicMdspan &span2)
 Elementwise subtraction - left minus right.
 
template<class BasicMdspan >
constexpr BasicMdspan multiplyElementwise (const BasicMdspan &span1, const BasicMdspan &span2)
 Elementwise multiplication.
 
template<class BasicMdspan >
constexpr BasicMdspan divideElementwise (const BasicMdspan &span1, const BasicMdspan &span2)
 Elementwise division - left / right.
 
template<std::ptrdiff_t... LHS, std::ptrdiff_t... RHS>
constexpr bool operator== (const extents< LHS...> &lhs, const extents< RHS...> &rhs) noexcept
 Comparison operator. More...
 
template<std::ptrdiff_t... LHS, std::ptrdiff_t... RHS>
constexpr bool operator!= (const extents< LHS...> &lhs, const extents< RHS...> &rhs) noexcept
 Check for non-equality. More...
 
template<CheckpointDataOperation operation, typename T >
ArrayRef< std::conditional_t
< operation==CheckpointDataOperation::Write||std::is_const_v
< T >, const typename
T::value_type, typename
T::value_type > > 
makeCheckpointArrayRef (T &container)
 Get an ArrayRef whose const-ness is defined by the checkpointing operation. More...
 
template<CheckpointDataOperation operation, typename T >
ArrayRef< std::conditional_t
< operation==CheckpointDataOperation::Write||std::is_const_v
< T >, const T, T > > 
makeCheckpointArrayRefFromArray (T *begin, size_t size)
 Get an ArrayRef to a C array whose const-ness is defined by the checkpointing operation. More...
 
template<typename VersionEnum >
VersionEnum checkpointVersion (const ReadCheckpointData *checkpointData, const std::string &key, const VersionEnum programVersion)
 Read a checkpoint version enum variable. More...
 
template<typename VersionEnum >
VersionEnum checkpointVersion (WriteCheckpointData *checkpointData, const std::string &key, const VersionEnum programVersion)
 Write the current code checkpoint version enum variable. More...
 
 forceMtsCombined_ ({})
 
 view_ ({},{}, false)
 
 useForceMtsCombined_ (false)
 
template<class T >
T & makeRefFromPointer (T *ptr)
 Take pointer, check if valid, return reference.
 
static const char * enumValueToString (AtomLocality enumValue)
 Get the human-friendly name for atom localities. More...
 
static const char * enumValueToString (InteractionLocality enumValue)
 Get the human-friendly name for interaction localities. More...
 
static InteractionLocality atomToInteractionLocality (const AtomLocality atomLocality)
 Convert atom locality to interaction locality. More...
 
int nonbondedMtsFactor (const t_inputrec &ir)
 Returns the interval in steps at which the non-bonded pair forces are calculated. More...
 
std::vector< MtsLevelsetupMtsLevels (const GromppMtsOpts &mtsOpts, std::vector< std::string > *errorMessages)
 Sets up and returns the MTS levels and checks requirements of MTS. More...
 
bool haveValidMtsSetup (const t_inputrec &ir)
 Returns whether we use MTS and the MTS setup is internally valid. More...
 
std::vector< std::string > checkMtsRequirements (const t_inputrec &ir)
 Checks whether the MTS requirements on other algorithms and output frequencies are met. More...
 
static int forceGroupMtsLevel (ArrayRef< const MtsLevel > mtsLevels, const MtsForceGroups mtsForceGroup)
 Returns the MTS level at which a force group is to be computed. More...
 
bool needStateGpu (SimulationWorkload simulationWorkload)
 If StatePropagatorDataGpu object is needed. More...
 
 conservedEnergyContribution_ (0)
 
 previousStepConservedEnergyContribution_ (0)
 
 conservedEnergyContributionStep_ (-1)
 
 reportPreviousStepConservedEnergy_ (reportPreviousStepConservedEnergy)
 
 statePropagatorData_ (statePropagatorData)
 
 energyData_ (energyData)
 
 fplog_ (fplog)
 
 inputrec_ (inputrec)
 
 mdAtoms_ (mdAtoms)
 
 nrnb_ (nrnb)
 
 identifier_ ("FirstOrderPressureCoupling-"+std::string(enumValueToString(pressureCouplingType_)))
 
template<typename... Ts>
auto checkUseModularSimulator (Ts &&...args) -> decltype(ModularSimulator::isInputCompatible(std::forward< Ts >(args)...))
 Whether or not to use the ModularSimulator. More...
 
 numDegreesOfFreedom_ (numDegreesOfFreedom)
 
 simulationTimeStep_ (simulationTimeStep)
 
 ensembleTemperature_ (ensembleTemperature)
 
 mttkPropagatorConnection_ (mttkPropagatorConnection)
 
 nextEnergyCalculationStep_ (-1)
 
 mdlog_ (mdlog)