Gromacs
2023.1
|
Generic GROMACS namespace.
Declares the integrators for energy minimization and NMA.
Convenience macro to help us avoid ifdefs each time we use sysconf.
Classes | |
class | ArrayRef |
STL-like interface to a C array of T (or part of a std container of T). 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 | 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 | 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 | 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 | FixedCapacityVector |
Vector that behaves likes std::vector but has fixed capacity. 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 | 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... | |
struct | AtomPair |
A pair of atoms indexes. 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 | MembedHolder |
Membed SimulatorBuilder parameter type. 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 | CheckpointData |
} More... | |
struct | IsSerializableEnum |
{ 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 | 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 | BenchmarkSystem |
Description of the system used for benchmarking. More... | |
class | Range |
Defines a range of integer numbers and accompanying operations. 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, DiagonalMaskType::JSizeEqualsISize > |
Specialized masker for JSizeEqualsISize. More... | |
class | DiagonalMasker< nR, kernelLayout, DiagonalMaskType::JSizeIsDoubleISize > |
Specialized masker for JSizeIsDoubleISize. More... | |
class | DiagonalMasker< nR, kernelLayout, DiagonalMaskType::JSizeIsHalfISize > |
Specialized masker for JSizeIsHalfISize. 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 | AbstractOptionSection |
Base class for specifying option section properties. More... | |
class | AbstractOptionSectionHandle |
Base class for handles to option sections. More... | |
class | OptionSection |
Declares a simple option section. More... | |
class | OptionSectionHandle |
Allows adding options to an OptionSection. More... | |
class | RepeatingOptionSectionHandle |
Allows adding options to an RepeatingOptionSection. More... | |
class | RepeatingOptionSection |
Declares an option section that creates a structure for each instance. 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 | ConvertTprInfo |
Declares gmx convert-tpr. 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 | StringToEnumValueConverter |
A class to convert a string to an enum value of type EnumType . 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 | 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 | 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 | 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 | ExceptionInfo |
Stores additional context information for exceptions. 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... | |
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. | |
typedef struct gmx::CacheLineAlignedFlag | CacheLineAlignedFlag |
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. | |
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. | |
typedef SimdReal | SimdBitMask |
Define SimdBitMask as a real SIMD register. | |
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. | |
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... | |
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< real > | RVec |
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... | |
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< Selection > | SelectionList |
Container of selections used in public selection interfaces. | |
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 | 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 | 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::SyclRocfft, FftBackend::SyclVkfft, FftBackend::SyclDbfft, FftBackend::Sycl, Count } |
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 } |
Enum for GROMACS CPU hardware detection support. 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 } |
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 |
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 | KernelCoulombType { KernelCoulombType::RF, KernelCoulombType::EwaldAnalytical, KernelCoulombType::EwaldTabulated } |
List of type of Nbnxm kernel coulomb type implementations. More... | |
enum | DiagonalMaskType { DiagonalMaskType::JSizeEqualsISize, DiagonalMaskType::JSizeIsDoubleISize, DiagonalMaskType::JSizeIsHalfISize } |
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 | 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 | 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 | 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::Supported, GpuAwareMpiStatus::NotSupported, GpuAwareMpiStatus::NotKnown, GpuAwareMpiStatus::Forced } |
Enum describing GPU-aware support in underlying MPI library. 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, Index, Plot, GenericData, Csv, QMInput, Count } |
Purpose of file(s) provided through an option. | |
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... | |
std::unique_ptr< Awh > | prepareAwhModule (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 ¶ms, 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< IMDModule > | createElectricFieldModule () |
Creates a module for an external electric field. More... | |
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... | |
CommandLineProgramContext & | initForCommandLine (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... | |
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> | |
auto | packSendBufKernel (sycl::handler &cgh, DeviceAccessor< Float3, sycl::access_mode::read_write > a_dataPacked, DeviceAccessor< Float3, sycl::access_mode::read > a_data, DeviceAccessor< int, sycl::access_mode::read > a_map, int mapSize, Float3 coordinateShift) |
template<bool accumulate> | |
auto | unpackRecvBufKernel (sycl::handler &cgh, DeviceAccessor< Float3, sycl::access_mode::read_write > a_data, DeviceAccessor< Float3, sycl::access_mode::read > a_dataPacked, DeviceAccessor< int, sycl::access_mode::read > a_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 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, 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) |
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) |
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... | |
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... | |
template<typename T > | |
static Float3 * | asGenericFloat3Pointer (T *in) |
Reinterpret-cast any pointer in to Float3 , checking the type compatibility. | |
template<typename T > | |
static const Float3 * | asGenericFloat3Pointer (const T *in) |
Reinterpret-cast any const pointer in to Float3 , checking the type compatibility. | |
template<typename C > | |
static Float3 * | asGenericFloat3Pointer (C &in) |
Reinterpret-cast any container in to Float3 , checking the type compatibility. | |
template<typename C > | |
static const Float3 * | asGenericFloat3Pointer (const C &in) |
Reinterpret-cast any const container in to Float3 , checking the type compatibility. | |
template<class T1 , class T2 > | |
bool | operator== (const Allocator< T1, HostAllocationPolicy > &a, const Allocator< T2, HostAllocationPolicy > &b) |
Return true if two allocators are identical. 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, const DeviceInformation &deviceInfo, 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 int | fillSupportedSubGroupSizes (const cl_device_id devId, const DeviceVendor deviceVendor, int resultCapacity, int *result) |
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... | |
std::unique_ptr< IMDModule > | createInteractiveMolecularDynamicsModule () |
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. | |
static void | print_IMD_error (const char *file, int line, char *msg) |
Print a nice error message on UNIX systems, using errno.h. | |
IMDSocket * | imdsock_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... | |
IMDSocket * | imdsock_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 > d_iatoms[numFTypesOnGpu], DeviceAccessor< float, sycl::access_mode::read_write > a_vTot, DeviceAccessor< t_iparams, sycl::access_mode::read > a_forceParams, DeviceAccessor< sycl::float4, sycl::access_mode::read > a_xq, DeviceAccessor< Float3, sycl::access_mode::read_write > a_f, DeviceAccessor< Float3, sycl::access_mode::read_write > a_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 ¢er, 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 > &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... | |
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... | |
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 do_log, bool do_ene, int64_t step, t_state *state, real *dvdlambda, bool computeVirial, tensor constraintsVirial) |
Constrain velocities only. More... | |
void | constrain_coordinates (gmx::Constraints *constr, bool do_log, bool do_ene, int64_t step, t_state *state, ArrayRefWithPadding< RVec > xp, real *dvdlambda, bool computeVirial, tensor constraintsVirial) |
Constraint 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... | |
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, DeviceBuffer< Float3 > d_nbnxmForceToAdd, DeviceBuffer< Float3 > d_rvecForceToAdd, DeviceBuffer< Float3 > d_baseForce, DeviceBuffer< int > d_cell, const DeviceStream &deviceStream) |
Backend-specific function to launch GPU Force Reduction kernel. More... | |
template<bool addRvecForce, bool accumulateForce> | |
static auto | reduceKernel (sycl::handler &cgh, DeviceAccessor< Float3, mode::read > a_nbnxmForce, OptionalAccessor< Float3, mode::read, addRvecForce > a_rvecForceToAdd, DeviceAccessor< Float3, accumulateForce?mode::read_write:mode::write > a_forceTotal, DeviceAccessor< int, mode::read > a_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 > &b_nbnxmForce, const DeviceBuffer< Float3 > &b_rvecForceToAdd, DeviceBuffer< Float3 > &b_forceTotal, const DeviceBuffer< int > &b_cell, const DeviceStream &deviceStream) |
Force reduction SYCL kernel launch code. | |
void | launchLeapFrogKernel (int numAtoms, DeviceBuffer< Float3 > d_x, DeviceBuffer< Float3 > d_xp, 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 (sycl::handler &cgh, DeviceAccessor< Float3, mode::read_write > a_x, DeviceAccessor< Float3, mode::discard_write > a_xp, DeviceAccessor< Float3, mode::read_write > a_v, DeviceAccessor< Float3, mode::read > a_f, DeviceAccessor< float, mode::read > a_inverseMasses, float dt, OptionalAccessor< float, mode::read, numTempScaleValues!=NumTempScaleValues::None > a_lambdas, OptionalAccessor< unsigned short, mode::read, numTempScaleValues==NumTempScaleValues::Multiple > a_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. | |
static int | count_triangle_constraints (const InteractionLists &ilist, const ListOfLists< int > &at2con) |
Finds all triangles of atoms that share constraints to a central atom. | |
static bool | more_than_two_sequential_constraints (const InteractionLists &ilist, const ListOfLists< int > &at2con) |
Finds sequences of sequential constraints. | |
Lincs * | init_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, ArrayRef< const std::vector< 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, DeviceAccessor< AtomPair, mode::read > a_constraints, DeviceAccessor< float, mode::read > a_constraintsTargetLengths, OptionalAccessor< int, mode::read, haveCoupledConstraints > a_coupledConstraintsCounts, OptionalAccessor< int, mode::read, haveCoupledConstraints > a_coupledConstraintsIndices, OptionalAccessor< float, mode::read, haveCoupledConstraints > a_massFactors, OptionalAccessor< float, mode::read_write, haveCoupledConstraints > a_matrixA, DeviceAccessor< float, mode::read > a_inverseMasses, const int numIterations, const int expansionOrder, DeviceAccessor< Float3, mode::read > a_x, DeviceAccessor< Float3, mode::read_write > a_xp, const float invdt, OptionalAccessor< Float3, mode::read_write, updateVelocities > a_v, OptionalAccessor< float, mode::read_write, computeVirial > a_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< Constraints > | makeConstraints (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< MDAtoms > | makeMDAtoms (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 dOH, real invmO, real invmH, 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 > virialScaled, const PbcAiuc &pbcAiuc, const DeviceStream &deviceStream) |
Apply SETTLE. More... | |
template<bool updateVelocities, bool computeVirial> | |
auto | settleKernel (sycl::handler &cgh, const int numSettles, DeviceAccessor< WaterMolecule, mode::read > a_settles, SettleParameters pars, DeviceAccessor< Float3, mode::read > a_x, DeviceAccessor< Float3, mode::read_write > a_xp, float invdt, OptionalAccessor< Float3, mode::read_write, updateVelocities > a_v, OptionalAccessor< float, mode::read_write, computeVirial > a_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 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 (sycl::handler &cgh, DeviceAccessor< Float3, sycl::access_mode::read_write > a_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 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 bool useGpuForNonbonded, const PmeRunMode pmeRunMode, const int numRanksPerSimulation, const int numPmeRanksPerSimulation) |
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. | |
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 ¬ifiers, gmx::ReadCheckpointDataHolder *modularSimulatorCheckpointData, bool useModularSimulator) |
Initialize local stateful simulation data. More... | |
SimulationInputHandle | makeSimulationInput (const LegacyMdrunOptions &options) |
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 < T >::value, const typename T::value_type, typename T::value_type > > | makeCheckpointArrayRef (T &container) |
template<CheckpointDataOperation operation, typename T > | |
ArrayRef< std::conditional_t < operation==CheckpointDataOperation::Write||std::is_const < T >::value, const T, T > > | makeCheckpointArrayRefFromArray (T *begin, size_t size) |
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< MtsLevel > | setupMtsLevels (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) | |
template<NumVelocityScalingValues numStartVelocityScalingValues, ParrinelloRahmanVelocityScaling parrinelloRahmanVelocityScaling, NumVelocityScalingValues numEndVelocityScalingValues> | |
static void | updateVelocities (int a, real dt, real lambdaStart, real lambdaEnd, const ArrayRef< const RVec > invMassPerDim, rvec *gmx_restrict v, const rvec *gmx_restrict f, const RVec &diagPR, const Matrix3x3 &matrixPR) |
Update velocities. | |
static void | updatePositions (int a, real dt, const rvec *gmx_restrict x, rvec *gmx_restrict xprime, const rvec *gmx_restrict v) |
Update positions. | |
template<NumVelocityScalingValues numStartVelocityScalingValues> | |
static void | scaleVelocities (int a, real lambda, rvec *gmx_restrict v) |
Scale velocities. | |
template<NumPositionScalingValues numPositionScalingValues> | |
static void | scalePositions (int a, real lambda, rvec *gmx_restrict x) |
Scale positions. | |
template<ParrinelloRahmanVelocityScaling parrinelloRahmanVelocityScaling> | |
static bool | canTreatPRScalingMatrixAsDiagonal (const Matrix3x3 &matrixPR) |
Is the PR matrix diagonal? | |
scalingStepPR_ (-1) | |
wcycle_ (wcycle) | |
template<IntegrationStage integrationStage> | |
constexpr bool | hasStartVelocityScaling () |
template<IntegrationStage integrationStage> | |
constexpr bool | hasEndVelocityScaling () |
template<IntegrationStage integrationStage> | |
constexpr bool | hasPositionScaling () |
template<IntegrationStage integrationStage> | |
constexpr bool | hasParrinelloRahmanScaling () |
template<IntegrationStage integrationStage> | |
static PropagatorConnection | getConnection (Propagator< integrationStage > gmx_unused *propagator, const PropagatorTag &propagatorTag) |
template<CheckpointDataOperation operation> | |
static void | doCheckpointData (CheckpointData< operation > *checkpointData, ArrayRef< double > previousStepCom) |
static void | runAllCallbacks (const std::vector< SignallerCallback > &callbacks, Step step, Time time) |
Helper function to call all callbacks in a list. | |
template<typename Element , typename... Args> | |
ISimulatorElement * | getElementPointer (LegacySimulatorData *legacySimulatorData, ModularSimulatorAlgorithmBuilderHelper *builderHelper, StatePropagatorData *statePropagatorData, EnergyData *energyData, FreeEnergyPerturbationData *freeEnergyPerturbationData, GlobalCommunicationHelper *globalCommunicationHelper, ObservablesReducer *observablesReducer, Args &&...args) |
template<typename Base , typename Element > | |
static std::enable_if_t < std::is_base_of< Base, Element >::value, Base * > | castOrNull (Element *element) |
Returns a pointer casted to type Base if the Element is derived from Base. | |
template<typename Base , typename Element > | |
static std::enable_if_t <!std::is_base_of< Base, Element >::value, Base * > | castOrNull (Element gmx_unused *element) |
Returns a nullptr of type Base if Element is not derived from Base. | |
ddpCount_ (0) | |
element_ (std::make_unique< Element >(this, fplog, cr, inputrec->nstxout, inputrec->nstvout, inputrec->nstfout, inputrec->nstxout_compressed, canMoleculesBeDistributedOverPBC, writeFinalConfiguration, finalConfigurationFilename, inputrec, globalTop)) | |
referenceTemperatureHelper_ (std::make_unique< ReferenceTemperatureHelper >(inputrec, this, mdatoms)) | |
vvResetVelocities_ (false) | |
isRegularSimulationEnd_ (false) | |
lastStep_ (-1) | |
globalState_ (globalState) | |
static void | updateGlobalState (t_state *globalState, const PaddedHostVector< RVec > &x, const PaddedHostVector< RVec > &v, const tensor box, int ddpCount, int ddpCountCgGl, const std::vector< int > &cgGl) |
Update the legacy global state. More... | |
bool | timesClose (Time time, Time referenceTime) |
Check whether two times are nearly equal. More... | |
static void | generateCoordinates (int multiplicationFactor, std::vector< gmx::RVec > *coordinates, matrix box) |
Generates coordinates and a box for the base system scaled by multiplicationFactor . | |
template<int iClusterSize, int jClusterSize> | |
static constexpr DiagonalMaskType | getDiagonalMaskType () |
Returns the diagonal mask type corresponding to the cluster sizes. | |
template<int nR, KernelLayout kernelLayout, DiagonalMaskType diagonalMaskType> | |
std::array< std::array < SimdBool, nR > , diagonalMaskType==DiagonalMaskType::JSizeEqualsISize?1:2 > | generateDiagonalMasks (const nbnxn_atomdata_t::SimdMasks &simdMasks) |
Returns the diagonal filter masks. | |
template<int nR, bool maskInteractions, std::size_t inputSize, std::size_t interactSize> | |
void | rInvSixAndRInvTwelve (const std::array< SimdReal, inputSize > &rInvSquaredV, const std::array< SimdBool, interactSize > &interactV, std::array< SimdReal, nR > &rInvSixV, std::array< SimdReal, nR > &rInvTwelveV) |
Computes r^-6 and r^-12, masked when requested. | |
template<int nR, bool maskInteractions, bool haveCutoffCheck, bool calculateEnergies, std::size_t inputSize, std::size_t interactSize, std::size_t vljvSize> | |
void | lennardJonesInteractionsSigmaEpsilon (const std::array< SimdReal, inputSize > &rInvV, const std::array< SimdBool, interactSize > &interactV, const SimdBool *const withinCutoffV, const std::array< SimdReal, nR > &sigmaV, const std::array< SimdReal, nR > &epsilonV, const SimdReal dispersionShift, const SimdReal repulsionShift, const SimdReal sixth, const SimdReal twelfth, std::array< SimdReal, nR > &frLJV, std::array< SimdReal, vljvSize > &vLJV) |
Returns F*r and optionally the potential for LJ with (un)shifted potential with sigma/epsilon. | |
template<int nR, std::size_t inputSize> | |
void | computeForceSwitchVariables (const std::array< SimdReal, inputSize > &rSquaredV, const std::array< SimdReal, inputSize > &rInvV, SimdReal rSwitch, std::array< SimdReal, nR > &rSwitchedV, std::array< SimdReal, nR > &rSwitchedSquaredV, std::array< SimdReal, nR > &rSwitchedSquaredTimesRV) |
Computes (r - r_switch), (r - r_switch)^2 and (r - r_switch)^2 * r. | |
SimdReal | addLJForceSwitch (SimdReal force, SimdReal rSwitched, SimdReal rSwitchedSquaredTimesR, SimdReal c2, SimdReal c3) |
Adds the force switch term to force . | |
SimdReal | ljForceSwitchPotential (SimdReal rSwitched, SimdReal rSwitchedSquaredTimesR, SimdReal c0, SimdReal c3, SimdReal c4) |
Returns the LJ force switch function for the potential. | |
template<int nR, std::size_t inputSize> | |
void | computePotentialSwitchVariables (const std::array< SimdReal, inputSize > &rSquaredV, const std::array< SimdReal, inputSize > &rInvV, SimdReal rSwitch, std::array< SimdReal, nR > &rSwitchedV, std::array< SimdReal, nR > &rSwitchedSquaredV) |
Computes (r - r_switch) and (r - r_switch)^2. | |
SimdReal | potentialSwitchFunction (SimdReal rsw, SimdReal rsw2, SimdReal c3, SimdReal c4, SimdReal c5) |
Returns the potential switch function. | |
SimdReal | potentialSwitchFunctionDerivative (SimdReal rsw, SimdReal rsw2, SimdReal c2, SimdReal c3, SimdReal c4) |
Returns the derivative of the potential switch function. | |
template<int nR, bool maskInteractions, bool calculateEnergies, std::size_t inputSize, std::size_t interactSize, std::size_t ljepSize, std::size_t vljvSize> | |
void | addLennardJonesEwaldCorrections (const std::array< SimdReal, inputSize > &rSquaredV, const std::array< SimdReal, inputSize > &rInvSquaredV, const std::array< SimdBool, interactSize > &interactV, const SimdBool *withinCutoffV, const std::array< SimdReal, nR > &c6GridV, const std::array< SimdReal, ljepSize > &ljEwaldParams, SimdReal sixth, std::array< SimdReal, nR > &frLJV, std::array< SimdReal, vljvSize > &vLJV) |
Adds the Ewald long-range correction for r^-6. | |
template<KernelLayout kernelLayout> | |
std::enable_if_t< kernelLayout==KernelLayout::r4xM, SimdReal > | loadIAtomData (const real *ptr, const int offset, const int iRegister) |
Load a single real for an i-atom into iRegister . | |
template<KernelLayout kernelLayout> | |
std::enable_if_t< kernelLayout==KernelLayout::r2xMM, SimdReal > | loadIAtomData (const real *ptr, const int offset, const int iRegister) |
Load a pair of consecutive reals for two i-atom into the respective halves of iRegister . | |
template<KernelLayout kernelLayout> | |
std::enable_if_t< kernelLayout==KernelLayout::r4xM, SimdReal > | loadJAtomData (const real *ptr, const int offset) |
Returns a SIMD register containing GMX_SIMD_REAL_WIDTH reals loaded from ptr + offset. | |
template<KernelLayout kernelLayout> | |
std::enable_if_t< kernelLayout==KernelLayout::r2xMM, SimdReal > | loadJAtomData (const real *ptr, const int offset) |
Returns a SIMD register containing a duplicate sequence of GMX_SIMD_REAL_WIDTH/2 reals loaded from ptr + offset. | |
template<bool loadMasks, KernelLayout kernelLayout> | |
std::enable_if_t<!loadMasks, std::array< SimdBool, 0 > > | loadSimdPairInteractionMasks (const int excl, SimdBitMask *filterBitMasksV) |
Loads no interaction masks, returns an empty array. | |
template<bool loadMasks, KernelLayout kernelLayout> | |
std::enable_if_t< loadMasks &&kernelLayout==KernelLayout::r4xM, std::array< SimdBool, c_nbnxnCpuIClusterSize > > | loadSimdPairInteractionMasks (const int excl, SimdBitMask *filterBitMasksV) |
Loads interaction masks for a cluster pair for 4xM kernel layout. | |
template<bool loadMasks, KernelLayout kernelLayout> | |
std::enable_if_t< loadMasks &&kernelLayout==KernelLayout::r2xMM, std::array< SimdBool, c_nbnxnCpuIClusterSize/2 > > | loadSimdPairInteractionMasks (const int excl, SimdBitMask *filterBitMasksV) |
Loads interaction masks for a cluster pair for 2xMM kernel layout. | |
template<KernelLayout kernelLayout, std::size_t offsetJJSize> | |
void | accumulateGroupPairEnergies4xM (SimdReal energies, real *groupPairEnergyBuffersPtr, const std::array< int, offsetJJSize > &offsetJJ) |
Adds energies to temporary energy group pair buffers for the 4xM kernel layout. | |
template<KernelLayout kernelLayout, std::size_t offsetJJSize> | |
void | accumulateGroupPairEnergies2xMM (SimdReal energies, real *groupPairEnergyBuffersPtr0, real *groupPairEnergyBuffersPtr1, const std::array< int, offsetJJSize > &offsetJJ) |
Adds energies to temporary energy group pair buffers for the 2xMM kernel layout. | |
template<int nR> | |
int | pairCountWithinCutoff (SimdReal rSquaredV[nR], SimdReal cutoffSquared) |
Return the number of atoms pairs that are within the cut-off distance. | |
bool | boxesAreEqual (const matrix box1, const matrix box2) |
Returns whether two boxes are of equal size and shape (within reasonable tolerance). | |
bool | boxIsZero (const matrix box) |
Returns whether a box is only initialised to zero or not. | |
void | shiftAtoms (const RVec &shift, ArrayRef< RVec > x) |
Shift all coordinates. More... | |
void | placeCoordinatesWithCOMInBox (const PbcType &pbcType, UnitCellType unitCellType, CenteringType centerType, const matrix box, ArrayRef< RVec > x, const gmx_mtop_t &mtop, COMShiftType comShiftType) |
Moves collection of atoms along the center of mass into a box. More... | |
static int | xyzToShiftIndex (int x, int y, int z) |
Convert grid coordinates to shift index. | |
static int | ivecToShiftIndex (ivec iv) |
Convert grid coordinates to shift index. | |
static int | shiftIndexToXDim (int iv) |
Return the shift in the X dimension of grid space corresponding to iv . | |
const char * | centerTypeNames (CenteringType type) |
Get names for the different centering types. More... | |
const char * | unitCellTypeNames (UnitCellType type) |
Get names for the different unit cell representation types. More... | |
double | getTransformationPullCoordinateValue (pull_coord_work_t *coord, ArrayRef< const pull_coord_work_t > variableCoords, double t) |
Calculates pull->coord[coord_ind].spatialData.value for a transformation pull coordinate. More... | |
static double | computeDerivativeForTransformationPullCoord (pull_coord_work_t *coord, const int variablePcrdIndex) |
Calculates and returns the derivative of a transformation pull coordinate from a dependent coordinate. More... | |
void | distributeTransformationPullCoordForce (pull_coord_work_t *pcrd, gmx::ArrayRef< pull_coord_work_t > variableCoords) |
Distributes the force on a transformation pull coordinates to the involved coordinates of lower rank. More... | |
static bool | checkIfRandomDeviceIsFunctional () |
Check if the RDRAND random device functioning correctly. More... | |
template<typename GeneratorType > | |
static uint64_t | makeRandomSeedInternal (GeneratorType &gen) |
Get the next pure or pseudo-random number. More... | |
uint64_t | makeRandomSeed () |
Return 64 random bits from the random device, suitable as seed. More... | |
template<class RealType = real, unsigned int Bits, class Rng > | |
RealType | generateCanonical (Rng &g) |
Generate a floating-point value with specified number of random bits. More... | |
void | compileSelection (SelectionCollection *coll) |
void | swap (SelectionCollection &lhs, SelectionCollection &rhs) |
static void gmx_unused | simdPrefetch (void gmx_unused *m) |
Prefetch memory at address m. More... | |
static void | store (float *m, float a) |
Store contents of float variable to aligned memory m. More... | |
static void | storeU (float *m, float a) |
Store contents of float variable to unaligned memory m. More... | |
static float | fma (float a, float b, float c) |
Float Fused-multiply-add. Result is a*b + c. More... | |
static float | fms (float a, float b, float c) |
Float Fused-multiply-subtract. Result is a*b - c. More... | |
static float | fnma (float a, float b, float c) |
Float Fused-negated-multiply-add. Result is -a*b + c. More... | |
static float | fnms (float a, float b, float c) |
Float Fused-negated-multiply-subtract. Result is -a*b - c. More... | |
static float | maskAdd (float a, float b, float m) |
Add two float variables, masked version. More... | |
static float | maskzMul (float a, float b, float m) |
Multiply two float variables, masked version. More... | |
static float | maskzFma (float a, float b, float c, float m) |
Float fused multiply-add, masked version. More... | |
static float gmx_simdcall | maskzRcp (float x, float m) |
Float 1.0/x, masked version. More... | |
static float | abs (float a) |
Float Floating-point abs(). More... | |
static float | max (float a, float b) |
Set each float element to the largest from two variables. More... | |
static float | min (float a, float b) |
Set each float element to the smallest from two variables. More... | |
static float | round (float a) |
Float round to nearest integer value (in floating-point format). More... | |
static float | trunc (float a) |
Truncate float, i.e. round towards zero - common hardware instruction. More... | |
static float | reduce (float a) |
Return sum of all elements in float variable (i.e., the variable itself). More... | |
static float | andNot (float a, float b) |
Bitwise andnot for two scalar float variables. More... | |
static bool | testBits (float a) |
Return true if any bits are set in the float variable. More... | |
static bool | anyTrue (bool a) |
Returns if the boolean is true. More... | |
static float | selectByMask (float a, bool mask) |
Select from single precision variable where boolean is true. More... | |
static float | selectByNotMask (float a, bool mask) |
Select from single precision variable where boolean is false. More... | |
static float | blend (float a, float b, bool sel) |
Blend float selection. More... | |
static std::int32_t | cvtR2I (float a) |
Round single precision floating point to integer. More... | |
static std::int32_t | cvttR2I (float a) |
Truncate single precision floating point to integer. More... | |
static std::int32_t | cvtI2R (std::int32_t a) |
Return integer. More... | |
static void | store (double *m, double a) |
Store contents of double variable to aligned memory m. More... | |
static void | storeU (double *m, double a) |
Store contents of double variable to unaligned memory m. More... | |
static double | fma (double a, double b, double c) |
double Fused-multiply-add. Result is a*b + c. More... | |
static double | fms (double a, double b, double c) |
double Fused-multiply-subtract. Result is a*b - c. More... | |
static double | fnma (double a, double b, double c) |
double Fused-negated-multiply-add. Result is - a*b + c. More... | |
static double | fnms (double a, double b, double c) |
double Fused-negated-multiply-subtract. Result is -a*b - c. More... | |
static double | maskAdd (double a, double b, double m) |
Add two double variables, masked version. More... | |
static double | maskzMul (double a, double b, double m) |
Multiply two double variables, masked version. More... | |
static double | maskzFma (double a, double b, double c, double m) |
double fused multiply-add, masked version. More... | |
static double gmx_simdcall | maskzRcp (double x, double m) |
Double 1.0/x, masked version. More... | |
static double | abs (double a) |
double doubleing-point abs(). More... | |
static double | max (double a, double b) |
Set each double element to the largest from two variables. More... | |
static double | min (double a, double b) |
Set each double element to the smallest from two variables. More... | |
static double | round (double a) |
double round to nearest integer value (in doubleing-point format). More... | |
static double | trunc (double a) |
Truncate double, i.e. round towards zero - common hardware instruction. More... | |
static double | reduce (double a) |
Return sum of all elements in double variable (i.e., the variable itself). More... | |
static double | andNot (double a, double b) |
Bitwise andnot for two scalar double variables. More... | |
static bool | testBits (double a) |
Return true if any bits are set in the double variable. More... | |
static double | selectByMask (double a, bool mask) |
Select from double precision variable where boolean is true. More... | |
static double | selectByNotMask (double a, bool mask) |
Select from double precision variable where boolean is false. More... | |
static double | blend (double a, double b, bool sel) |
Blend double selection. More... | |
static std::int32_t | cvtR2I (double a) |
Round single precision doubleing point to integer. More... | |
static std::int32_t | cvttR2I (double a) |
Truncate single precision doubleing point to integer. More... | |
static double | cvtF2D (float a) |
Convert float to double (mimicks SIMD conversion) More... | |
static float | cvtD2F (double a) |
Convert double to float (mimicks SIMD conversion) More... | |
static void | store (std::int32_t *m, std::int32_t a) |
Store contents of integer variable to aligned memory m. More... | |
static void | storeU (std::int32_t *m, std::int32_t a) |
Store contents of integer variable to unaligned memory m. More... | |
static std::int32_t | andNot (std::int32_t a, std::int32_t b) |
Bitwise andnot for two scalar integer variables. More... | |
static bool | testBits (std::int32_t a) |
Return true if any bits are set in the integer variable. More... | |
static std::int32_t | selectByMask (std::int32_t a, bool mask) |
Select from integer variable where boolean is true. More... | |
static std::int32_t | selectByNotMask (std::int32_t a, bool mask) |
Select from integer variable where boolean is false. More... | |
static std::int32_t | blend (std::int32_t a, std::int32_t b, bool sel) |
Blend integer selection. More... | |
static bool | cvtB2IB (bool a) |
Just return a boolean (mimicks SIMD real-to-int bool conversions) More... | |
static bool | cvtIB2B (bool a) |
Just return a boolean (mimicks SIMD int-to-real bool conversions) More... | |
static float | copysign (float x, float y) |
Composes single value with the magnitude of x and the sign of y. More... | |
static void | invsqrtPair (float x0, float x1, float *out0, float *out1) |
Calculate 1/sqrt(x) for two floats. More... | |
static float | inv (float x) |
Calculate 1/x for float. More... | |
static float | maskzInvsqrt (float x, bool m) |
Calculate 1/sqrt(x) for masked entry of float. More... | |
static float | maskzInv (float x, bool m) |
Calculate 1/x for masked entry of float. More... | |
template<MathOptimization opt = MathOptimization::Safe> | |
static float | sqrt (float x) |
Float sqrt(x). This is the square root. More... | |
template<MathOptimization opt = MathOptimization::Safe> | |
static float | cbrt (float x) |
Float cbrt(x). This is the cubic root. More... | |
static float | log (float x) |
Float log(x). This is the natural logarithm. More... | |
template<MathOptimization opt = MathOptimization::Safe> | |
static float | exp2 (float x) |
Float 2^x. More... | |
template<MathOptimization opt = MathOptimization::Safe> | |
static float | exp (float x) |
Float exp(x). More... | |
static float | erf (float x) |
Float erf(x). More... | |
static float | erfc (float x) |
Float erfc(x). More... | |
static void | sincos (float x, float *sinval, float *cosval) |
Float sin & cos. More... | |
static float | sin (float x) |
Float sin. More... | |
static float | cos (float x) |
Float cos. More... | |
static float | tan (float x) |
Float tan. More... | |
static float | asin (float x) |
float asin. More... | |
static float | acos (float x) |
Float acos. More... | |
static float | atan (float x) |
Float atan. More... | |
static float | atan2 (float y, float x) |
Float atan2(y,x). More... | |
static float | pmeForceCorrection (float z2) |
Calculate the force correction due to PME analytically in float. More... | |
static float | pmePotentialCorrection (float z2) |
Calculate the potential correction due to PME analytically in float. More... | |
static double | copysign (double x, double y) |
Composes double value with the magnitude of x and the sign of y. More... | |
static void | invsqrtPair (double x0, double x1, double *out0, double *out1) |
Calculate 1/sqrt(x) for two doubles. More... | |
static double | inv (double x) |
Calculate 1/x for double. More... | |
static double | maskzInvsqrt (double x, bool m) |
Calculate 1/sqrt(x) for masked entry of double. More... | |
static double | maskzInv (double x, bool m) |
Calculate 1/x for masked entry of double. More... | |
template<MathOptimization opt = MathOptimization::Safe> | |
static double | sqrt (double x) |
Double sqrt(x). This is the square root. More... | |
template<MathOptimization opt = MathOptimization::Safe> | |
static double | cbrt (double x) |
Double cbrt(x). This is the cubic root. More... | |
static double | log (double x) |
Double log(x). This is the natural logarithm. More... | |
template<MathOptimization opt = MathOptimization::Safe> | |
static double | exp2 (double x) |
Double 2^x. More... | |
template<MathOptimization opt = MathOptimization::Safe> | |
static double | exp (double x) |
Double exp(x). More... | |
static double | erf (double x) |
Double erf(x). More... | |
static double | erfc (double x) |
Double erfc(x). More... | |
static void | sincos (double x, double *sinval, double *cosval) |
Double sin & cos. More... | |
static double | sin (double x) |
Double sin. More... | |
static double | cos (double x) |
Double cos. More... | |
static double | tan (double x) |
Double tan. More... | |
static double | asin (double x) |
Double asin. More... | |
static double | acos (double x) |
Double acos. More... | |
static double | atan (double x) |
Double atan. More... | |
static double | atan2 (double y, double x) |
Double atan2(y,x). More... | |
static double | pmeForceCorrection (double z2) |
Calculate the force correction due to PME analytically in double. More... | |
static double | pmePotentialCorrection (double z2) |
Calculate the potential correction due to PME analytically in double. More... | |
static double | invsqrtSingleAccuracy (double x) |
Calculate 1/sqrt(x) for double, but with single accuracy. More... | |
static void | invsqrtPairSingleAccuracy (double x0, double x1, double *out0, double *out1) |
Calculate 1/sqrt(x) for two doubles, but with single accuracy. More... | |
static double | invSingleAccuracy (double x) |
Calculate 1/x for double, but with single accuracy. More... | |
static double | maskzInvsqrtSingleAccuracy (double x, bool m) |
Calculate 1/sqrt(x) for masked entry of double, but with single accuracy. More... | |
static double | maskzInvSingleAccuracy (double x, bool m) |
Calculate 1/x for masked entry of double, but with single accuracy. More... | |
static double | sqrtSingleAccuracy (double x) |
Calculate sqrt(x) for double, but with single accuracy. More... | |
static double | logSingleAccuracy (double x) |
Double log(x), but with single accuracy. This is the natural logarithm. More... | |
static double | exp2SingleAccuracy (double x) |
Double 2^x, but with single accuracy. More... | |
static double | expSingleAccuracy (double x) |
Double exp(x), but with single accuracy. More... | |
static double | erfSingleAccuracy (double x) |
Double erf(x), but with single accuracy. More... | |
static double | erfcSingleAccuracy (double x) |
Double erfc(x), but with single accuracy. More... | |
static void | sincosSingleAccuracy (double x, double *sinval, double *cosval) |
Double sin & cos, but with single accuracy. More... | |
static double | sinSingleAccuracy (double x) |
Double sin, but with single accuracy. More... | |
static double | cosSingleAccuracy (double x) |
Double cos, but with single accuracy. More... | |
static double | tanSingleAccuracy (double x) |
Double tan, but with single accuracy. More... | |
static double | asinSingleAccuracy (double x) |
Double asin, but with single accuracy. More... | |
static double | acosSingleAccuracy (double x) |
Double acos, but with single accuracy. More... | |
static double | atanSingleAccuracy (double x) |
Double atan, but with single accuracy. More... | |
static double | atan2SingleAccuracy (double y, double x) |
Double atan2(y,x), but with single accuracy. More... | |
static double | pmeForceCorrectionSingleAccuracy (double z2) |
Force correction due to PME in double, but with single accuracy. More... | |
static double | pmePotentialCorrectionSingleAccuracy (double z2) |
Potential correction due to PME in double, but with single accuracy. More... | |
template<int align> | |
static void | gatherLoadTranspose (const float *base, const std::int32_t offset[], float *v0, float *v1, float *v2, float *v3) |
Load 4 consecutive floats from base/offset into four variables. More... | |
template<int align> | |
static void | gatherLoadTranspose (const float *base, const std::int32_t offset[], float *v0, float *v1) |
Load 2 consecutive floats from base/offset into four variables. More... | |
template<int align> | |
static void | gatherLoadUTranspose (const float *base, const std::int32_t offset[], float *v0, float *v1, float *v2) |
Load 3 consecutive floats from base/offsets, store into three vars. More... | |
template<int align> | |
static void | transposeScatterStoreU (float *base, const std::int32_t offset[], float v0, float v1, float v2) |
Store 3 floats to 3 to base/offset. More... | |
template<int align> | |
static void | transposeScatterIncrU (float *base, const std::int32_t offset[], float v0, float v1, float v2) |
Add 3 floats to base/offset. More... | |
template<int align> | |
static void | transposeScatterDecrU (float *base, const std::int32_t offset[], float v0, float v1, float v2) |
Subtract 3 floats from base/offset. More... | |
static void | expandScalarsToTriplets (float scalar, float *triplets0, float *triplets1, float *triplets2) |
Copy single float to three variables. More... | |
template<int align> | |
static void | gatherLoadBySimdIntTranspose (const float *base, std::int32_t offset, float *v0, float *v1, float *v2, float *v3) |
Load 4 floats from base/offsets and store into variables. More... | |
template<int align> | |
static void | gatherLoadUBySimdIntTranspose (const float *base, std::int32_t offset, float *v0, float *v1) |
Load 2 floats from base/offsets and store into variables (unaligned). More... | |
template<int align> | |
static void | gatherLoadBySimdIntTranspose (const float *base, std::int32_t offset, float *v0, float *v1) |
Load 2 floats from base/offsets and store into variables (aligned). More... | |
static float | reduceIncr4ReturnSum (float *m, float v0, float v1, float v2, float v3) |
Add each float to four consecutive memory locations, return sum. More... | |
template<int align> | |
static void | gatherLoadTranspose (const double *base, const std::int32_t offset[], double *v0, double *v1, double *v2, double *v3) |
Load 4 consecutive doubles from base/offset into four variables. More... | |
template<int align> | |
static void | gatherLoadTranspose (const double *base, const std::int32_t offset[], double *v0, double *v1) |
Load 2 consecutive doubles from base/offset into four variables. More... | |
template<int align> | |
static void | gatherLoadUTranspose (const double *base, const std::int32_t offset[], double *v0, double *v1, double *v2) |
Load 3 consecutive doubles from base/offsets, store into three vars. More... | |
template<int align> | |
static void | transposeScatterStoreU (double *base, const std::int32_t offset[], double v0, double v1, double v2) |
Store 3 doubles to 3 to base/offset. More... | |
template<int align> | |
static void | transposeScatterIncrU (double *base, const std::int32_t offset[], double v0, double v1, double v2) |
Add 3 doubles to base/offset. More... | |
template<int align> | |
static void | transposeScatterDecrU (double *base, const std::int32_t offset[], double v0, double v1, double v2) |
Subtract 3 doubles from base/offset. More... | |
static void | expandScalarsToTriplets (double scalar, double *triplets0, double *triplets1, double *triplets2) |
Copy single double to three variables. More... | |
template<int align> | |
static void | gatherLoadBySimdIntTranspose (const double *base, std::int32_t offset, double *v0, double *v1, double *v2, double *v3) |
Load 4 doubles from base/offsets and store into variables. More... | |
template<int align> | |
static void | gatherLoadUBySimdIntTranspose (const double *base, std::int32_t offset, double *v0, double *v1) |
Load 2 doubles from base/offsets and store into variables (unaligned). More... | |
template<int align> | |
static void | gatherLoadBySimdIntTranspose (const double *base, std::int32_t offset, double *v0, double *v1) |
Load 2 doubles from base/offsets and store into variables (aligned). More... | |
static double | reduceIncr4ReturnSum (double *m, double v0, double v1, double v2, double v3) |
Add each double to four consecutive memory locations, return sum. More... | |
std::unique_ptr< IMDModule > | createSwapCoordinatesModule () |
Creates a module for Computational Electrophysiology swapping. | |
bool | decideWhetherToUseGpusForNonbondedWithThreadMpi (TaskTarget nonbondedTarget, bool haveAvailableDevices, const std::vector< int > &userGpuTaskAssignment, EmulateGpuNonbonded emulateGpuNonbonded, bool buildSupportsNonbondedOnGpu, bool nonbondedOnGpuIsUseful, int numRanksPerSimulation) |
Decide whether this thread-MPI simulation will run nonbonded tasks on GPUs. More... | |
static bool | decideWhetherToUseGpusForPmeFft (const TaskTarget pmeFftTarget) |
static bool | canUseGpusForPme (const bool useGpuForNonbonded, const TaskTarget pmeTarget, const TaskTarget pmeFftTarget, const t_inputrec &inputrec, std::string *errorMessage) |
bool | decideWhetherToUseGpusForPmeWithThreadMpi (bool useGpuForNonbonded, TaskTarget pmeTarget, TaskTarget pmeFftTarget, int numDevicesToUse, const std::vector< int > &userGpuTaskAssignment, const t_inputrec &inputrec, int numRanksPerSimulation, int numPmeRanksPerSimulation) |
Decide whether this thread-MPI simulation will run PME tasks on GPUs. More... | |
bool | decideWhetherToUseGpusForNonbonded (TaskTarget nonbondedTarget, const std::vector< int > &userGpuTaskAssignment, EmulateGpuNonbonded emulateGpuNonbonded, bool buildSupportsNonbondedOnGpu, bool nonbondedOnGpuIsUseful, bool gpusWereDetected) |
Decide whether the simulation will try to run nonbonded tasks on GPUs. More... | |
bool | decideWhetherToUseGpusForPme (bool useGpuForNonbonded, TaskTarget pmeTarget, TaskTarget pmeFftTarget, const std::vector< int > &userGpuTaskAssignment, const t_inputrec &inputrec, int numRanksPerSimulation, int numPmeRanksPerSimulation, bool gpusWereDetected) |
Decide whether the simulation will try to run tasks of different types on GPUs. More... | |
PmeRunMode | determinePmeRunMode (bool useGpuForPme, const TaskTarget &pmeFftTarget, const t_inputrec &inputrec) |
Determine PME run mode. More... | |
bool | decideWhetherToUseGpusForBonded (bool useGpuForNonbonded, bool useGpuForPme, TaskTarget bondedTarget, const t_inputrec &inputrec, const gmx_mtop_t &mtop, int numPmeRanksPerSimulation, bool gpusWereDetected) |
Decide whether the simulation will try to run bonded tasks on GPUs. More... | |
bool | decideWhetherToUseGpuForUpdate (bool isDomainDecomposition, bool useUpdateGroups, PmeRunMode pmeRunMode, bool havePmeOnlyRank, bool useGpuForNonbonded, TaskTarget updateTarget, bool gpusWereDetected, const t_inputrec &inputrec, const gmx_mtop_t &mtop, bool useEssentialDynamics, bool doOrientationRestraints, bool haveFrozenAtoms, bool useModularSimulator, bool doRerun, const gmx::MDLogger &mdlog) |
Decide whether to use GPU for update. More... | |
bool | decideWhetherDirectGpuCommunicationCanBeUsed (const DevelopmentFeatureFlags &devFlags, bool haveMts, bool haveSwapCoords, const gmx::MDLogger &mdlog) |
Decide whether direct GPU communication can be used. More... | |
bool | decideWhetherToUseGpuForHalo (bool havePPDomainDecomposition, bool useGpuForNonbonded, bool canUseDirectGpuComm, bool useModularSimulator, bool doRerun, bool haveEnergyMinimization, const gmx::MDLogger &mdlog) |
Decide whether to use GPU for halo exchange. More... | |
SimulationWorkload | createSimulationWorkload (const t_inputrec &inputrec, bool disableNonbondedCalculation, const DevelopmentFeatureFlags &devFlags, bool havePpDomainDecomposition, bool haveSeparatePmeRank, bool useGpuForNonbonded, PmeRunMode pmeRunMode, bool useGpuForBonded, bool useGpuForUpdate, bool useGpuDirectHalo, bool canUseDirectGpuComm, bool useGpuPmeDecomposition) |
Build datastructure that contains decisions whether to run different workload task on GPUs. More... | |
std::vector< GpuTask > | findGpuTasksOnThisRank (bool haveGpusOnThisPhysicalNode, TaskTarget nonbondedTarget, TaskTarget pmeTarget, TaskTarget bondedTarget, TaskTarget updateTarget, bool useGpuForNonbonded, bool useGpuForPme, bool rankHasPpTask, bool rankHasPmeTask) |
Returns container of all tasks on this rank that are eligible for GPU execution. More... | |
GpuTasksOnRanks | findAllGpuTasksOnThisNode (ArrayRef< const GpuTask > gpuTasksOnThisRank, const PhysicalNodeCommunicator &physicalNodeComm) |
Returns container of all tasks on all ranks of this node that are eligible for GPU execution. More... | |
void | checkHardwareOversubscription (int numThreadsOnThisRank, int rank, const HardwareTopology &hwTop, const PhysicalNodeCommunicator &comm, const MDLogger &mdlog) |
Warns for oversubscribing the hardware threads, when that is the case. | |
std::vector< int > | parseUserGpuIdString (const std::string &gpuIdString) |
Parse a GPU ID specifier string into a container describing device IDs exposed to the run. More... | |
std::vector< int > | makeListOfAvailableDevices (gmx::ArrayRef< const std::unique_ptr< DeviceInformation >> deviceInfoList, const std::string &devicesSelectedByUserString) |
Implement GPU ID selection by returning the available GPU IDs on this physical node that are compatible. More... | |
std::vector< int > | parseUserTaskAssignmentString (const std::string &gpuIdString) |
Parse a GPU ID specifier string into a container describing device ID to task mapping. More... | |
std::vector< int > | makeGpuIds (ArrayRef< const int > compatibleGpus, size_t numGpuTasks) |
Make a vector containing numGpuTasks IDs of the IDs found in compatibleGpus . More... | |
std::string | makeGpuIdString (const std::vector< int > &gpuIds, int totalNumberOfTasks) |
Convert a container of GPU deviced IDs to a string that can be used by gmx tune_pme as input to mdrun -gputasks. More... | |
void | checkUserGpuIds (ArrayRef< const std::unique_ptr< DeviceInformation >> deviceInfoList, ArrayRef< const int > compatibleGpus, ArrayRef< const int > gpuIds) |
Check that all user-selected GPUs are compatible. More... | |
void | reportGpuUsage (const MDLogger &mdlog, ArrayRef< const GpuTaskAssignment > gpuTaskAssignmentOnRanksOfThisNode, size_t numGpuTasksOnThisNode, size_t numPpRanks, bool printHostName, PmeRunMode pmeRunMode, const SimulationWorkload &simulationWork) |
Log a report on how GPUs are being used on the ranks of the physical node of rank 0 of the simulation. More... | |
template<GpuTask TaskType> | |
static bool | hasTaskType (const GpuTaskMapping &mapping) |
Function for whether the task of mapping has value TaskType . More... | |
static bool | hasPmeOrNonbondedTask (const GpuTaskMapping &mapping) |
Function for whether the mapping has the GPU PME or Nonbonded task. More... | |
static std::vector< int > | parseGpuDeviceIdentifierList (const std::string &gpuIdString) |
Parse a GPU ID specifier string into a container. More... | |
void | writeHeader (TextWriter *writer, const std::string &text, const std::string §ion, bool writeFormattedText) |
Write appropiate Header to output stream. More... | |
void | writeSystemInformation (TextWriter *writer, const gmx_mtop_t &top, bool writeFormattedText) |
Write information about the molecules in the system. More... | |
void | writeParameterInformation (TextWriter *writer, const t_inputrec &ir, bool writeFormattedText) |
Write information about system parameters. More... | |
void | writeInformation (TextOutputFile *outputStream, const t_inputrec &ir, const gmx_mtop_t &top, bool writeFormattedText, bool notStdout) |
Wrapper for writing out information. More... | |
void | blockaToExclusionBlocks (const t_blocka *b, gmx::ArrayRef< ExclusionBlock > b2) |
Convert the exclusions. More... | |
void | exclusionBlocksToBlocka (gmx::ArrayRef< const ExclusionBlock > b2, t_blocka *b) |
Convert the exclusions expressed in b into t_blocka form. | |
void | mergeExclusions (ListOfLists< int > *excl, gmx::ArrayRef< ExclusionBlock > b2) |
Merge the contents of b2 into excl . More... | |
gmx_rmpbc_t | gmx_rmpbc_init (const gmx::TopologyInformation &topInfo) |
Convenience overload useful for implementing legacy tools. | |
static std::size_t | getPageSize () |
Return a page size, from a sysconf/WinAPI query if available, or a default guess (4096 bytes). More... | |
void | printBinaryInformation (FILE *fp, const IProgramContext &programContext) |
Print basic information about the executable. More... | |
void | printBinaryInformation (FILE *fp, const IProgramContext &programContext, const BinaryInformationSettings &settings) |
Print basic information about the executable with custom settings. More... | |
void | printBinaryInformation (TextWriter *writer, const IProgramContext &programContext, const BinaryInformationSettings &settings) |
Print basic information about the executable with custom settings. More... | |
ArrayRef< bool > | makeArrayRef (std::vector< BoolType > &boolVector) |
Create ArrayRef to bool from reference to std::vector<BoolType>. More... | |
ArrayRef< const bool > | makeConstArrayRef (const std::vector< BoolType > &boolVector) |
Create ArrayRef to const bool from reference to std::vector<BoolType>. More... | |
std::string | bromacs () |
Return a cool definition for the acronym GROMACS. | |
std::string | getCoolQuote () |
Return a string with a cool quote. | |
std::string | getCudaDriverVersionString () |
Returns a string of the CUDA driver version. | |
std::string | getCudaRuntimeVersionString () |
Returns a string of the CUDA runtime version. | |
const char * | getErrorCodeString (int errorcode) |
Returns a short string description of an error code. More... | |
void | printFatalErrorMessage (FILE *fp, const std::exception &ex) |
Formats a standard fatal error message for reporting an exception. More... | |
std::string | formatExceptionMessageToString (const std::exception &ex) |
Formats an error message for reporting an exception. More... | |
void | formatExceptionMessageToFile (FILE *fp, const std::exception &ex) |
Formats an error message for reporting an exception. More... | |
void | formatExceptionMessageToWriter (TextWriter *writer, const std::exception &ex) |
Formats an error message for reporting an exception. More... | |
int | processExceptionAtExit (const std::exception &ex) |
Handles an exception that is causing the program to terminate. More... | |
void | processExceptionAsFatalError (const std::exception &ex) |
Helper function for terminating the program on an exception. More... | |
const DataFileFinder & | getLibraryFileFinder () |
Gets a finder for locating data files from share/top/. More... | |
void | setLibraryFileFinder (const DataFileFinder *finder) |
Sets a finder for location data files from share/top/. More... | |
std::filesystem::path | findLibraryFile (const std::filesystem::path &filename, bool bAddCWD=true, bool bFatal=true) |
Finds full path for a library file. More... | |
FilePtr | openLibraryFile (const std::filesystem::path &filename, bool bAddCWD=true, bool bFatal=true) |
Opens a library file for reading in an RAII-style FILE handle. More... | |
std::size_t | pageSize () |
Return the memory page size on this system. More... | |
void | init (int *argc, char ***argv) |
Initializes the GROMACS library. More... | |
void | finalize () |
Deinitializes the GROMACS library. More... | |
void | writeKeyValueTreeAsMdp (TextWriter *writer, const KeyValueTreeObject &tree) |
Write a flat key-value tree to writer in mdp style. More... | |
GpuAwareMpiStatus | checkMpiCudaAwareSupport () |
Wrapper on top of MPIX_Query_cuda_support() For MPI implementations which don't support this function, it returns NotKnown Even when an MPI implementation does support this function, MPI library might not be robust enough to detect CUDA-aware support at runtime correctly e.g. when UCX PML is used or CUDA is disabled at runtime. More... | |
GpuAwareMpiStatus | checkMpiHipAwareSupport () |
Wrapper on top of MPIX_Query_hip_support() or MPIX_Query_rocm_support() . For MPI implementations which don't support this function, it returns NotKnown. More... | |
GpuAwareMpiStatus | checkMpiZEAwareSupport () |
Wrapper on top of MPIX_Query_ze_support() For MPI implementations which don't support this function, it returns NotKnown. More... | |
void | niceHeader (TextWriter *writer, const char *fn, char commentChar) |
Prints creation time stamp and user information into a string as comments, and returns it. More... | |
std::vector < std::filesystem::path > | splitPathEnvironment (const std::string &pathEnv) |
Split PATH environment variable into search paths. More... | |
std::vector < std::filesystem::path > | getSystemExecutablePaths () |
Get collection of possible executable paths. | |
std::string | stripSourcePrefix (const char *path) |
Strip source prefix from path. | |
std::filesystem::path | concatenateBeforeExtension (const std::filesystem::path &path, const std::string &addition) |
Concatenate before extension. | |
std::filesystem::path | stripExtension (const std::filesystem::path &path) |
Remove extension from file path. | |
bool | extensionMatches (const std::filesystem::path &path, std::string_view extension) |
Check if file extension of path without final '.' matches extension . | |
void | MPI_Comm_free_wrapper (MPI_Comm *comm) |
Wrapper function for RAII-style cleanup. More... | |
template<typename ValueType , int NumExpectedValues> | |
static std::optional < std::array< ValueType, NumExpectedValues > > | parsedArrayFromInputString (const std::string &str) |
Convert a string into an array of values. More... | |
template<typename ValueType , int NumExpectedValues> | |
static std::string | stringIdentityTransformWithArrayCheck (const std::string &toConvert, const std::string &errorContextMessage) |
Returns the input string, throwing an exception if the demanded conversion to an array will not succeed. More... | |
template<class Function > | |
auto | dispatchTemplatedFunction (Function &&f) |
const IProgramContext & | getProgramContext () |
Returns the global IProgramContext instance. More... | |
void | setProgramContext (const IProgramContext *context) |
Sets the global IProgramContext instance. More... | |
std::size_t | countWords (const char *s) |
Returns number of space-separated words in zero-terminated char ptr. More... | |
std::size_t | countWords (const std::string &str) |
Returns the number of space-separated words in a string object. More... | |
bool | endsWith (const char *str, const char *suffix) |
Tests whether a string ends with another string. More... | |
std::string | stripSuffixIfPresent (const std::string &str, const char *suffix) |
Removes a suffix from a string. More... | |
std::string | stripString (const std::string &str) |
Removes leading and trailing whitespace from a string. More... | |
std::string | formatString (gmx_fmtstr const char *fmt,...) |
std::string | formatStringV (const char *fmt, va_list ap) |
Formats a string (vsnprintf() wrapper). More... | |
std::vector< std::string > | splitString (const std::string &str) |
Splits a string to whitespace separated tokens. More... | |
std::vector< std::string > | splitDelimitedString (const std::string &str, char delim) |
Splits a string to tokens separated by a given delimiter. More... | |
std::vector< std::string > | splitAndTrimDelimitedString (const std::string &str, char delim) |
Splits str to tokens separated by delimiter delim . Removes leading and trailing whitespace from those strings with std::isspace. More... | |
std::string | replaceAll (const std::string &input, const char *from, const char *to) |
Replace all occurrences of a string with another string. More... | |
std::string | replaceAll (const std::string &input, const std::string &from, const std::string &to) |
Replace all occurrences of a string with another string. More... | |
std::string | replaceAllWords (const std::string &input, const char *from, const char *to) |
Replace whole words with others. More... | |
std::string | replaceAllWords (const std::string &input, const std::string &from, const std::string &to) |
Replace whole words with others. More... | |
bool | equalCaseInsensitive (const std::string &source, const std::string &target) |
Return whether two strings are equal, ignoring case. More... | |
bool | equalCaseInsensitive (const std::string &source, const std::string &target, size_t maxLengthOfComparison) |
Checks if at most maxLengthOfComparison characters of two strings match case insensitive. More... | |
std::string | toUpperCase (const std::string &text) |
Makes the string uppercase. More... | |
std::string | toLowerCase (const std::string &text) |
Makes the string lowercase. More... | |
std::string | getSyclCompilerVersion () |
Returns an internal version strings of the Intel DPC++ and hipSYCL compiler. | |
int | gmx_mdrun (int argc, char *argv[]) |
Implements C-style main function for mdrun. More... | |
int | gmx_mdrun (MPI_Comm communicator, const gmx_hw_info_t &hwinfo, int argc, char *argv[]) |
Implements C-style main function for mdrun. More... | |
AnalysisHistogramSettingsInitializer | histogramFromRange (real min, real max) |
Initializes a histogram using a range and a bin width. More... | |
AnalysisHistogramSettingsInitializer | histogramFromBins (real start, int nbins, real binwidth) |
Initializes a histogram using bin width and the number of bins. More... | |
static float | invsqrt (float x) |
Calculate 1.0/sqrt(x) in single precision. More... | |
static double | invsqrt (double x) |
Calculate 1.0/sqrt(x) in double precision, but single range. More... | |
static double | invsqrt (int x) |
Calculate 1.0/sqrt(x) for integer x in double precision. More... | |
static float | invcbrt (float x) |
Calculate inverse cube root of x in single precision. More... | |
static double | invcbrt (double x) |
Calculate inverse sixth root of x in double precision. More... | |
static double | invcbrt (int x) |
Calculate inverse sixth root of integer x in double precision. More... | |
static float | sixthroot (float x) |
Calculate sixth root of x in single precision. More... | |
static double | sixthroot (double x) |
Calculate sixth root of x in double precision. More... | |
static double | sixthroot (int x) |
Calculate sixth root of integer x, return double. More... | |
static float | invsixthroot (float x) |
Calculate inverse sixth root of x in single precision. More... | |
static double | invsixthroot (double x) |
Calculate inverse sixth root of x in double precision. More... | |
static double | invsixthroot (int x) |
Calculate inverse sixth root of integer x in double precision. More... | |
template<typename T > | |
T | square (T x) |
calculate x^2 More... | |
template<typename T > | |
T | power3 (T x) |
calculate x^3 More... | |
template<typename T > | |
T | power4 (T x) |
calculate x^4 More... | |
template<typename T > | |
T | power5 (T x) |
calculate x^5 More... | |
template<typename T > | |
T | power6 (T x) |
calculate x^6 More... | |
template<typename T > | |
T | power12 (T x) |
calculate x^12 More... | |
static real | series_sinhx (real x) |
Maclaurin series for sinh(x)/x. More... | |
constexpr int32_t | exactDiv (int32_t a, int32_t b) |
Exact integer division, 32bit. More... | |
constexpr int64_t | exactDiv (int64_t a, int64_t b) |
Exact integer division, 64bit. | |
static int | roundToInt (float x) |
Round float to int. More... | |
static int | roundToInt (double x) |
Round double to int. | |
static int64_t | roundToInt64 (float x) |
Round float to int64_t. | |
static int64_t | roundToInt64 (double x) |
Round double to int64_t. | |
template<typename T , typename = std::enable_if_t<std::is_integral<T>::value>> | |
static constexpr bool | isPowerOfTwo (const T v) |
Check whether v is an integer power of 2. | |
template<typename ValueType > | |
BasicVector< ValueType > | operator* (const BasicVector< ValueType > &basicVector, const ValueType &scalar) |
Allow vector scalar multiplication. | |
template<typename ValueType > | |
BasicVector< ValueType > | operator* (const ValueType &scalar, const BasicVector< ValueType > &basicVector) |
Allow scalar vector multiplication. | |
template<typename VectorType > | |
static VectorType | unitVector (const VectorType &v) |
unitv for gmx::BasicVector | |
template<typename ValueType > | |
static ValueType | norm (BasicVector< ValueType > v) |
norm for gmx::BasicVector | |
template<typename ValueType > | |
static ValueType | norm2 (BasicVector< ValueType > v) |
Square of the vector norm for gmx::BasicVector. | |
template<typename VectorType > | |
static VectorType | cross (const VectorType &a, const VectorType &b) |
cross product for gmx::BasicVector | |
template<typename ValueType > | |
static ValueType | dot (BasicVector< ValueType > a, BasicVector< ValueType > b) |
dot product for gmx::BasicVector | |
template<typename VectorType > | |
static VectorType | scaleByVector (const VectorType &a, const VectorType &b) |
Multiply two vectors element by element and return the result. | |
template<typename VectorType > | |
static VectorType | elementWiseMin (const VectorType &a, const VectorType &b) |
Return the element-wise minimum of two vectors. | |
template<typename VectorType > | |
static VectorType | elementWiseMax (const VectorType &a, const VectorType &b) |
Return the element-wise maximum of two vectors. | |
template<typename ValueType > | |
static BasicVector< ValueType > ::RawArray * | as_vec_array (BasicVector< ValueType > *x) |
Casts a gmx::BasicVector array into an equivalent raw C array. | |
template<typename ValueType > | |
static const BasicVector < ValueType >::RawArray * | as_vec_array (const BasicVector< ValueType > *x) |
Casts a gmx::BasicVector array into an equivalent raw C array. | |
static rvec * | as_rvec_array (RVec *x) |
Casts a gmx::RVec array into an rvec array. | |
static const rvec * | as_rvec_array (const RVec *x) |
Casts a gmx::RVec array into an rvec array. | |
static dvec * | as_dvec_array (DVec *x) |
Casts a gmx::DVec array into an Dvec array. | |
static ivec * | as_ivec_array (IVec *x) |
Casts a gmx::IVec array into an ivec array. | |
static const dvec * | as_dvec_array (const DVec *x) |
Casts a gmx::DVec array into an dvec array. | |
static const ivec * | as_ivec_array (const IVec *x) |
Casts a gmx::IVec array into an ivec array. | |
template<typename T > | |
ArrayRef< std::conditional_t < std::is_const< T >::value, const typename T::value_type, typename T::value_type > > | makeArrayRef (T &c) |
Create ArrayRef from container with type deduction. More... | |
template<typename T > | |
ArrayRef< const typename T::value_type > | makeConstArrayRef (const T &c) |
Create ArrayRef to const T from container with type deduction. More... | |
template<typename T > | |
void | swap (ArrayRef< T > &a, ArrayRef< T > &b) |
Simple swap method for ArrayRef objects. More... | |
template<typename T > | |
std::vector< T > | copyOf (const ArrayRef< const T > &arrayRef) |
Return a vector that is a copy of an ArrayRef. More... | |
template<typename T > | |
index | ssize (const T &t) |
Return signed size of container. | |
template<typename EnumerationArrayType > | |
EnumerationArrayType::EnumerationWrapperType | keysOf (const EnumerationArrayType &) |
Returns an object that provides iterators over the keys associated with EnumerationArrayType . More... | |
template<class Exception , class Tag , class T > | |
std::enable_if_t < std::is_base_of < GromacsException, Exception > ::value, Exception > | operator<< (Exception ex, const ExceptionInfo< Tag, T > &item) |
Associates extra information with an exception. More... | |
void | fclose_wrapper (FILE *fp) |
fclose wrapper to be used as unique_ptr deleter | |
static bool | isNullOrEmpty (const char *str) |
Tests whether a string is null or empty. More... | |
static bool | startsWith (const std::string &str, const std::string &prefix) |
Tests whether a string starts with another string. More... | |
static bool | startsWith (const char *str, const char *prefix) |
Tests whether a string starts with another string. More... | |
static bool | endsWith (const std::string &str, const char *suffix) |
Tests whether a string ends with another string. More... | |
static bool | contains (const std::string &str, const char *substr) |
Tests whether a string contains another as a substring. More... | |
static bool | contains (const std::string &str, const std::string &substr) |
Tests whether a string contains another as a substring. More... | |
static bool | endsWith (const std::string &str, const std::string &suffix) |
Tests whether a string ends with another string. More... | |
std::string | formatString (const char *fmt,...) |
Formats a string (snprintf() wrapper). More... | |
template<typename InputIterator , typename FormatterType > | |
std::string | formatAndJoin (InputIterator begin, InputIterator end, const char *separator, const FormatterType &formatter) |
Formats all the range as strings, and then joins them with a separator in between. More... | |
template<typename ContainerType , typename FormatterType > | |
std::string | formatAndJoin (const ContainerType &container, const char *separator, const FormatterType &formatter) |
Formats all elements of the container as strings, and then joins them with a separator in between. More... | |
template<typename InputIterator > | |
std::string | joinStrings (InputIterator begin, InputIterator end, const char *separator) |
Joins strings from a range with a separator in between. More... | |
template<typename ContainerType > | |
std::string | joinStrings (const ContainerType &container, const char *separator) |
Joins strings from a container with a separator in between. More... | |
template<size_t count> | |
std::string | joinStrings (const char *const (&array)[count], const char *separator) |
Joins strings from an array with a separator in between. More... | |
template<class T > | |
void | free_wrapper (T *p) |
Wrapper of standard library free(), to be used as unique_cptr deleter for memory allocated by malloc, e.g. by an external library such as TNG. | |
template<class T > | |
void | sfree_wrapper (T *p) |
sfree wrapper to be used as unique_cptr deleter | |
template<typename T , typename D > | |
std::unique_ptr< T, D > | create_unique_with_deleter (T *t, D d) |
Create unique_ptr with any deleter function or lambda. | |
void | applyGlobalSimulationState (const SimulationInput &simulationInput, PartialDeserializedTprFile *partialDeserializedTpr, t_state *globalState, t_inputrec *inputrec, gmx_mtop_t *globalTopology) |
Get the global simulation input. More... | |
std::unique_ptr< t_state > | globalSimulationState (const SimulationInput &) |
void | applyGlobalInputRecord (const SimulationInput &, t_inputrec *) |
void | applyGlobalTopology (const SimulationInput &, gmx_mtop_t *) |
template<typename T > | |
std::remove_const_t< T > | norm (T *v) |
Forward operations on C Array style vectors to C implementations. More... | |
template<typename T > | |
std::remove_const_t< T > | norm2 (T *v) |
Variables | |
const gmx::EnumerationArray < XvgFormat, const char * > | c_xvgFormatNames |
Names for XvgFormat. More... | |
static const int | c_linewidth = 80 - 2 |
Linewidth used for warning output. | |
static const int | c_biasMaxNumDim = 4 |
The maximum dimensionality of the AWH coordinate. | |
static const EnumerationArray < DensitySimilarityMeasureMethod, const char * > | c_densitySimilarityMeasureMethodNames |
Name the methods that may be used to evaluate similarity between densities. More... | |
static const EnumerationArray < DensityFittingAmplitudeMethod, const char * > | c_densityFittingAmplitudeMethodNames |
The names of the methods to determine the amplitude of the atoms to be spread on a grid. More... | |
static const std::string | c_qmmmCP2KModuleName = "qmmm-cp2k" |
Tag with name of the QMMM with CP2K MDModule. | |
static const EnumerationArray < QMMMQMMethod, const char * > | c_qmmmQMMethodNames |
The names of the supported QM methods. More... | |
const std::vector< std::string > | periodic_system |
symbols of the elements in periodic table More... | |
static const EnumerationArray < ChangeSettingType, const char * > | c_changeSettingTypeNames |
Mapping for enums from ChangeSettingType. More... | |
static const EnumerationArray < ChangeAtomsType, const char * > | c_changeAtomsTypeNames |
Mapping for enums from ChangeAtomsType. More... | |
pmeStream | |
static constexpr Architecture | c_architecture |
Constant that tells what the architecture is. More... | |
constexpr int | c_loopWait = 1 |
How long shall we wait in seconds until we check for a connection again? | |
constexpr int | c_connectWait = 1 |
How long shall we check for the IMD_GO? | |
constexpr int | c_headerSize = 8 |
IMD Header Size. | |
constexpr int | c_protocolVersion = 2 |
IMD Protocol Version. | |
static const char | IMDstr [] = "IMD:" |
Tag output from the IMD module with this string. More... | |
constexpr int | c_maxConnections = 1 |
Currently only 1 client connection is supported. | |
static constexpr int | numFTypesOnGpu = 8 |
The number on bonded function types supported on GPUs. | |
constexpr std::array< int, numFTypesOnGpu > | fTypesOnGpu |
List of all bonded function types supported on GPUs. More... | |
static const int | simd_width = 1 |
Define simd_width for memory allocation used for SIMD code. | |
static constexpr int | c_threadsPerBlock = 256 |
Number of threads in a GPU block. | |
static constexpr int | sc_workGroupSize = 256 |
Number of work-items in a work-group. | |
static const EnumerationArray < IncompatibilityReasons, std::string > | reasonStrings |
Strings explaining why the system is incompatible with update groups. More... | |
static constexpr int | c_ftypeVsiteStart = F_VSITE1 |
The start value of the vsite indices in the ftype enum. More... | |
static constexpr int | c_ftypeVsiteEnd = F_VSITEN + 1 |
The start and end value of the vsite indices in the ftype enum. | |
static constexpr int64_t | sc_atomInfo_EnergyGroupIdMask = 0b11111111 |
The first 8 bits are reserved for energy-group ID. | |
static const gmx::EnumerationArray < MtsForceGroups, std::string > | mtsForceGroupNames |
Names for the MTS force groups. More... | |
const std::array< RVec, 2 > | c_forces = { { { 0.5, 0.1, 1.2 }, { -2.1, 0.2, 0.3 } } } |
static constexpr int | s_maxNumThreadsForReduction = 256 |
The max thread number is arbitrary, we used a fixed number to avoid memory management. Using more than 16 threads is probably never useful performance wise. | |
boxRel_ { { 0 } } | |
static constexpr EnumerationArray< NhcUsage, const char * > | nhcUsageNames = { "System", "Barostat" } |
boxVelocity_ { { 0 } } | |
previousBox_ { { 0 } } | |
constexpr int | c_centralShiftIndex = detail::c_numIvecs / 2 |
constexpr int | c_numShiftVectors = detail::c_numIvecs |
constexpr bool | c_gpuBuildSyclWithoutGpuFft |
constexpr double | c_angstrom = 1e-10 |
constexpr double | c_kilo = 1e3 |
constexpr double | c_nano = 1e-9 |
constexpr double | c_pico = 1e-12 |
constexpr double | c_nm2A = c_nano / c_angstrom |
constexpr double | c_cal2Joule = 4.184 |
constexpr double | c_electronCharge = 1.602176634e-19 |
constexpr double | c_amu = 1.66053906660e-27 |
constexpr double | c_boltzmann = 1.380649e-23 |
constexpr double | c_avogadro = 6.02214076e23 |
constexpr double | c_universalGasConstant = c_boltzmann * c_avogadro |
constexpr double | c_boltz = c_universalGasConstant / c_kilo |
constexpr double | c_faraday = c_electronCharge * c_avogadro |
constexpr double | c_planck1 = 6.62607015e-34 |
constexpr double | c_planck = (c_planck1 * c_avogadro / (c_pico * c_kilo)) |
constexpr double | c_epsilon0Si = 8.8541878128e-12 |
constexpr double | c_epsilon0 |
constexpr double | c_speedOfLight |
constexpr double | c_rydberg = 1.0973731568160e-02 |
constexpr double | c_one4PiEps0 = (1.0 / (4.0 * 3.14159265358979323846 * c_epsilon0)) |
constexpr double | c_barMdunits = (1e5 * c_nano * c_pico * c_pico / c_amu) |
constexpr double | c_presfac = 1.0 / c_barMdunits |
constexpr double | c_debye2Enm = (1e-15 / (c_speedOfLight * c_electronCharge)) |
constexpr double | c_enm2Debye = 1.0 / c_debye2Enm |
constexpr double | c_fieldfac = c_faraday / c_kilo |
constexpr double | c_hartree2Kj = ((2.0 * c_rydberg * c_planck * c_speedOfLight) / c_avogadro) |
constexpr double | c_bohr2Nm = 0.0529177210903 |
constexpr double | c_hartreeBohr2Md = (c_hartree2Kj * c_avogadro / c_bohr2Nm) |
constexpr double | c_rad2Deg = 180.0 / 3.14159265358979323846 |
constexpr double | c_deg2Rad = 3.14159265358979323846 / 180.0 |
static constexpr int64_t | sc_atomInfo_FreeEnergyPerturbation = 1 << 15 |
Constants whose bit describes a property of an atom in AtomInfoWithinMoleculeBlock.atomInfo. More... | |
static constexpr int64_t | sc_atomInfo_HasPerturbedCharge = 1 << 16 |
static constexpr int64_t | sc_atomInfo_Exclusion = 1 << 17 |
static constexpr int64_t | sc_atomInfo_Constraint = 1 << 20 |
static constexpr int64_t | sc_atomInfo_Settle = 1 << 21 |
static constexpr int64_t | sc_atomInfo_BondCommunication = 1 << 22 |
static constexpr int64_t | sc_atomInfo_HasVdw = 1 << 23 |
static constexpr int64_t | sc_atomInfo_HasCharge = 1 << 24 |
constexpr int | c_dBoxZ = 1 |
Maximum dimensions of grid expressing shifts across PBC. | |
constexpr int | c_dBoxY = 1 |
constexpr int | c_dBoxX = 2 |
using gmx::AlignedAllocator = typedef Allocator<T, AlignedAllocationPolicy> |
Aligned memory allocator.
T | Type of objects to allocate |
This convenience partial specialization can be used for the optional allocator template parameter in standard library containers, which is necessary e.g. to use SIMD aligned load and store operations on data in those containers. The memory will always be aligned according to the behavior of AlignedAllocationPolicy.
using gmx::BasicMatrix3x3 = typedef MultiDimArray<std::array<ElementType, 3 * 3>, extents<3, 3>> |
Three-by-three matrix of ElementType.
ElementType | type of element to be stored in matrix |
using gmx::BoxMatrix = typedef std::array<std::array<real, DIM>, DIM> |
A 3x3 matrix data type useful for simulation boxes.
Default fast and accurate random engine in Gromacs.
This engine will return 2*2^64 random results using the default gmx::RandomDomain::Other stream, and can be initialized with a single seed argument without having to remember empty template angle brackets.
using gmx::HostAllocator = typedef Allocator<T, HostAllocationPolicy> |
Memory allocator that uses HostAllocationPolicy.
T | Type of objects to allocate |
This convenience partial specialization can be used for the optional allocator template parameter in standard library containers whose memory may be used for e.g. GPU transfers. The memory will always be allocated according to the behavior of HostAllocationPolicy.
using gmx::index = typedef std::ptrdiff_t |
Integer type for indexing into arrays or vectors.
Same as ptrdiff_t.
using gmx::Matrix3x3 = typedef BasicMatrix3x3<real> |
Three-by-three real number matrix.
using gmx::PageAlignedAllocator = typedef Allocator<T, PageAlignedAllocationPolicy> |
PageAligned memory allocator.
T | Type of objects to allocate |
This convenience partial specialization can be used for the optional allocator template parameter in standard library containers, which is necessary for locking memory pages for asynchronous transfer between a GPU device and the host. The memory will always be aligned according to the behavior of PageAlignedAllocationPolicy.
typedef std::random_device gmx::RandomDevice |
Random device.
For now this is identical to the standard library, but since we use the GROMACS random module for all other random engines and distributions it is convenient to have this too in the same module.
|
strong |
|
strong |
|
strong |
|
strong |
Enum with the AWH variables to write.
|
strong |
|
strong |
Checkpoint signals.
Signals set and read by CheckpointHandler. Possible signals include
|
strong |
The enums here define the flags specifying the requirements of different outputadapter modules.
When building the object for deciding on the output to a new coordinate file, the CoordinateFile object needs to be able to validate that the dependencies of attached IOutputAdapters are fulfilled. Classes and interfaces that use the enum can check their dependencies against the information encoded in the flags and can then perform an appropriate reaction if there is a mismatch.
|
strong |
Options for checking bonded interactions.
These values must match the bool false and true used for mdrun -ddcheck
Enumerator | |
---|---|
ExcludeZeroLimit |
Do not check bonded interactions that go to 0 for large distances. |
All |
Check all bonded interactions. |
|
strong |
The options for the domain decomposition MPI task ordering.
|
strong |
|
strong |
The methods that determine how two densities are compared to one another.
|
strong |
Class enum to describe the different logical streams used for GPU work.
Whether the actual streams differ is an implementation detail of the manager class.
|
strong |
List of type of Nbnxm kernel coulomb type implementations.
Enumerator | |
---|---|
JSizeEqualsISize |
j-cluster size = i-cluster size |
JSizeIsDoubleISize |
j-cluster size = 2 * i-cluster size |
JSizeIsHalfISize |
j-cluster size = i-cluster size / 2 |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
The enums here define the guarantees provided by frameconverters concerning the modifications they provide.
A method can specify different kind of guarantees for the operation, and aggregate methods can combine those flags to provide an overview about what has happened to a coordinate frame during processing.
|
strong |
|
strong |
|
strong |
State of graph.
|
strong |
|
strong |
Enum for types of IMD messages.
We use the same records as the NAMD/VMD IMD implementation.
|
strong |
|
strong |
List of type of Nbnxm kernel coulomb type implementations.
|
strong |
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.
|
strong |
Force group available for selection for multiple time step integration.
|
strong |
|
strong |
|
strong |
Sets the number of different temperature coupling values.
This is needed to template the kernel
Enumerator | |
---|---|
None |
No temperature coupling. |
Single |
Single T-scaling value (one group) |
Multiple |
Multiple T-scaling values, need to use T-group indices. |
Count |
Number of valid values. |
|
strong |
|
strong |
|
strong |
Helper enum for pinning policy of the allocation of HostAllocationPolicy.
For an efficient non-blocking transfer (e.g. to a GPU), the memory pages for a buffer need to be pinned to a physical page. Aligning such buffers to a physical page should miminize the number of pages that need to be pinned. However, some buffers that may be used for such transfers may also be used in either GROMACS builds or run paths that cannot use such a device, so the policy can be configured so that the resource consumption is no higher than required for correct, efficient operation in all cases.
|
strong |
|
strong |
Enumerated values for fixed part of random seed (domain)
Random numbers are used in many places in GROMACS, and to avoid identical streams the random seeds should be different. Instead of keeping track of several different user-provided seeds, it is better to use the fact that generators like ThreeFry take two 64-bit keys, and combine a general user-provided 64-bit random seed with a second constant value from this list to make each stream guaranteed unique.
|
strong |
|
strong |
Reset signals.
Signals set and read by ResetHandler. Possible signals include
|
strong |
|
strong |
|
strong |
Enumeration for describing how mdrun is (re)starting.
|
strong |
Stop signals.
Signals that stop conditions can send to all ranks. Possible signals include
|
strong |
Enum class for whether StringToEnumValueConverter will strip strings of leading and trailing whitespace before comparison.
Enumerator | |
---|---|
No |
Do not strip strings. |
Yes |
Strip strings. |
|
strong |
|
strong |
|
inlinestatic |
Float Floating-point abs().
a | any floating point values |
|
inlinestatic |
double doubleing-point abs().
a | any doubleing point values |
|
inlinestatic |
Float acos.
x | The argument to evaluate acos for |
|
inlinestatic |
Double acos.
x | The argument to evaluate acos for |
|
inlinestatic |
Double acos, but with single accuracy.
x | The argument to evaluate acos for |
|
static |
Creates a new container object with the user requested IOutputAdapter derived methods attached to it.
[in] | requirements | Specifications for modules to add. |
[in] | atoms | Local copy of atom information to use. |
[in] | sel | Selection to use for choosing atoms to write out. |
[in] | abilities | Specifications for what the output method can do. |
|
inline |
Add constraint to splitMap
with all constraints coupled to it.
Adds the constraint c
from the constrain list iatoms
to the map splitMap
if it was not yet added. Then goes through all the constraints coupled to c
and calls itself recursively. This ensures that all the coupled constraints will be added to neighboring locations in the final data structures on the device, hence mapping all coupled constraints to the same thread block. A value of -1 in the splitMap
is used to flag that constraint was not yet added to the splitMap
.
[in] | iatoms | The list of constraints. |
[in] | stride | Number of elements per constraint in iatoms . |
[in] | atomsAdjacencyList | Information about connections between atoms. |
[out] | splitMap | Map of sequential constraint indexes to indexes to be on the device |
[in] | c | Sequential index for constraint to consider adding. |
[in,out] | currentMapIndex | The rolling index for the constraints mapping. |
|
static |
Modify atoms information in coordinate frame to fit output selection.
Changes the information contained in the coordinate frame t_atoms struct to match the selection provided to the module.
[in] | atoms | Pointer to original t_atoms. |
[in] | selectionAtoms | Pointer to local atoms. |
[in] | sel | Reference to selection. |
bool gmx::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.
The given grid point index is updated to the next valid grid point index by traversing the sub-part of the grid, here termed the subgrid. Since the subgrid range might extend beyond the actual size of the grid, the subgrid is traversed until a point both in the subgrid and grid is found. If no point is found, the function returns false and the index is not modified. The starting point needs to be inside of the subgrid. However, if this index is not given, meaning < 0, then the search is initialized at the subgrid origin, i.e. in this case the "next" grid point index is defined to be the first common grid/subgrid point.
[in] | grid | The grid. |
[in] | subgridOrigin | Vector locating the subgrid origin relative to the grid origin. |
[in] | subgridNpoints | Number of points along each subgrid dimension. |
[in,out] | gridPointIndex | Pointer to the starting/next grid point index. |
|
inlinestatic |
Bitwise andnot for two scalar float variables.
a | data1 |
b | data2 |
|
inlinestatic |
Bitwise andnot for two scalar double variables.
a | data1 |
b | data2 |
|
inlinestatic |
Bitwise andnot for two scalar integer variables.
a | data1 |
b | data2 |
|
static |
Checks whether any dimension uses the given coordinate provider type.
[in] | awhBiasParams | The bias params to check. |
[in] | awhCoordProvider | The type of coordinate provider |
|
static |
Checks whether any dimension uses the given coordinate provider type.
[in] | awhParams | The AWH params to check. |
[in] | awhCoordProvider | The type of coordinate provider |
|
inlinestatic |
Returns if the boolean is true.
a | Logical variable. |
void gmx::applyGlobalSimulationState | ( | const SimulationInput & | simulationInput, |
PartialDeserializedTprFile * | partialDeserializedTpr, | ||
t_state * | globalState, | ||
t_inputrec * | inputrec, | ||
gmx_mtop_t * | globalTopology | ||
) |
Get the global simulation input.
Acquire global simulation data structures from the SimulationInput handle. Note that global data is returned in the calling thread. In parallel computing contexts, the client is responsible for calling only where needed.
Example: if (SIMMAIN(cr)) { // Only the main rank has the global state globalState = globalSimulationState(simulationInput);
// Read (nearly) all data required for the simulation applyGlobalInputRecord(simulationInput, inputrec); applyGlobalTopology(simulationInput, &mtop); }
void gmx::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.
Establish an invariant for the simulator at a trajectory point. Call on all ranks (after domain decomposition and task assignments).
After this call, the simulator has all of the information it will receive in order to advance a trajectory from the current step. Checkpoint information has been applied, if applicable, and stateful data has been (re)initialized.
|
inlinestatic |
float asin.
x | The argument to evaluate asin for |
|
inlinestatic |
Double asin.
x | The argument to evaluate asin for |
|
inlinestatic |
Double asin, but with single accuracy.
x | The argument to evaluate asin for |
|
inlinestatic |
Assert that the matrix m
describes a simulation box.
The GROMACS convention is that all simulation box descriptions are normalized to have zero entries in the upper triangle. This function asserts if that is not true.
|
inlinestatic |
Assert that the matrix m
describes a simulation box.
The GROMACS convention is that all simulation box descriptions are normalized to have zero entries in the upper triangle. This function asserts if that is not true.
|
static |
Here we try to assign all vsites that are in our local range.
Our task local atom range is tData->rangeStart - tData->rangeEnd. Vsites that depend only on local atoms, as indicated by taskIndex[]==thread, are assigned to task tData->ilist. Vsites that depend on non-local atoms but not on other vsites are assigned to task tData->id_task.ilist. taskIndex[] is set for all vsites in our range, either to our local tasks or to the single last task as taskIndex[]=2*nthreads.
|
inlinestatic |
Float atan.