Gromacs  2026.0-dev-20250215-e896270
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Public Attributes
gmx::nbnxn_atomdata_output_t Struct Reference

#include <gromacs/nbnxm/atomdata.h>

Description

Struct that holds force and energy output buffers.

Public Member Functions

 nbnxn_atomdata_output_t (NbnxmKernelType kernelType, int numEnergyGroups, PinningPolicy pinningPolicy)
 Constructor. More...
 
 nbnxn_atomdata_output_t (nbnxn_atomdata_output_t &&) noexcept
 Move constructor.
 
 ~nbnxn_atomdata_output_t ()
 Destructor. More...
 

Public Attributes

HostVector< realf
 f, size natoms*fstride
 
HostVector< realfshift
 Shift force array, size c_numShiftVectors*DIM.
 
HostVector< realVvdw
 Temporary Van der Waals group energy storage.
 
HostVector< realVc
 Temporary Coulomb group energy storage.
 
std::unique_ptr
< EnergyAccumulator< false,
true > > 
accumulatorSingleEnergies
 Accumulator for energy output with a single energy group.
 
std::unique_ptr
< EnergyAccumulator< true,
true > > 
accumulatorGroupEnergies
 Accumulator for energy output with multiple energy groups.
 

Constructor & Destructor Documentation

gmx::nbnxn_atomdata_output_t::nbnxn_atomdata_output_t ( NbnxmKernelType  kernelType,
int  numEnergyGroups,
PinningPolicy  pinningPolicy 
)

Constructor.

Parameters
[in]kernelTypeType of non-bonded kernel
[in]numEnergyGroupsThe number of energy groups
[in]pinningPolicySets the pinning policy for all buffers used on the GPU
gmx::nbnxn_atomdata_output_t::~nbnxn_atomdata_output_t ( )
default
Initial value:
{ pinningPolicy }),
fshift({}, { pinningPolicy }),
Vvdw({}, { pinningPolicy }),
Vc({}, { pinningPolicy })
{
fshift.resize(c_numShiftVectors * DIM);
Vvdw.resize(numEnergyGroups * numEnergyGroups);
Vc.resize(numEnergyGroups * numEnergyGroups);
{
if (numEnergyGroups == 1)
{
accumulatorSingleEnergies = std::make_unique<EnergyAccumulator<false, true>>();
}
else
{
const int c_iClusterSize = sc_iClusterSize(kernelType);
const int c_jClusterSize = sc_jClusterSize(kernelType);
accumulatorGroupEnergies = std::make_unique<EnergyAccumulator<true, true>>(
numEnergyGroups, c_iClusterSize, c_jClusterSize);
}
}
}
HostVector< real > Vc
Temporary Coulomb group energy storage.
Definition: atomdata.h:132
static constexpr int sc_iClusterSize(const NbnxmKernelType kernelType)
The nbnxn i-cluster size in atoms for the given NBNxM kernel type.
Definition: nbnxm_geometry.h:73
std::unique_ptr< EnergyAccumulator< true, true > > accumulatorGroupEnergies
Accumulator for energy output with multiple energy groups.
Definition: atomdata.h:137
HostVector< real > fshift
Shift force array, size c_numShiftVectors*DIM.
Definition: atomdata.h:128
nbnxn_atomdata_output_t(NbnxmKernelType kernelType, int numEnergyGroups, PinningPolicy pinningPolicy)
Constructor.
Definition: atomdata.cpp:116
static constexpr int sc_jClusterSize(const NbnxmKernelType kernelType)
The nbnxn j-cluster size in atoms for the given NBNxM kernel type.
Definition: nbnxm_geometry.h:93
std::unique_ptr< EnergyAccumulator< false, true > > accumulatorSingleEnergies
Accumulator for energy output with a single energy group.
Definition: atomdata.h:135
HostVector< real > Vvdw
Temporary Van der Waals group energy storage.
Definition: atomdata.h:130

Destructor.


The documentation for this struct was generated from the following files: