STORMM Source Documentation
Loading...
Searching...
No Matches
hpc_nonbonded_potential.h
1// -*-c++-*-
2#ifndef STORMM_NONBONDED_POTENTIAL_CUH
3#define STORMM_NONBONDED_POTENTIAL_CUH
4
5#include "copyright.h"
6#include "Accelerator/core_kernel_manager.h"
7#include "Accelerator/gpu_details.h"
8#include "Constants/behavior.h"
9#include "MolecularMechanics/mm_controls.h"
10#include "Potential/energy_enumerators.h"
11#include "Synthesis/implicit_solvent_workspace.h"
12#include "Synthesis/phasespace_synthesis.h"
13#include "Synthesis/static_mask_synthesis.h"
14#include "Synthesis/synthesis_abstracts.h"
15#include "Synthesis/synthesis_enumerators.h"
16#include "Topology/atomgraph_enumerators.h"
17#include "Trajectory/thermostat.h"
18#include "cacheresource.h"
19#include "energy_enumerators.h"
20#include "scorecard.h"
21
22namespace stormm {
23namespace energy {
24
25using card::GpuDetails;
26using card::CoreKlManager;
27using constants::PrecisionModel;
28using mm::MMControlKit;
29using mm::MolecularMechanicsControls;
30using numerics::AccumulationMethod;
31using synthesis::AtomGraphSynthesis;
32using synthesis::ImplicitSolventWorkspace;
33using synthesis::ISWorkspaceKit;
34using synthesis::NbwuKind;
35using synthesis::PhaseSpaceSynthesis;
36using synthesis::PsSynthesisWriter;
37using synthesis::SeMaskSynthesisReader;
38using synthesis::StaticExclusionMaskSynthesis;
39using synthesis::SyNonbondedKit;
40using synthesis::VwuGoal;
41using topology::ImplicitSolventModel;
42using trajectory::Thermostat;
43using trajectory::ThermostatWriter;
44
58cudaFuncAttributes queryNonbondedKernelRequirements(PrecisionModel prec, NbwuKind kind,
59 EvaluateForce eval_frc,
60 EvaluateEnergy eval_nrg,
61 AccumulationMethod acc_meth,
62 ImplicitSolventModel igb,
63 ClashResponse collision_handling);
64
69cudaFuncAttributes queryBornRadiiKernelRequirements(PrecisionModel prec, NbwuKind kind,
70 AccumulationMethod acc_meth,
71 ImplicitSolventModel igb);
72
77cudaFuncAttributes queryBornDerivativeKernelRequirements(PrecisionModel prec, NbwuKind kind,
78 AccumulationMethod acc_meth,
79 ImplicitSolventModel igb);
80
124void launchNonbonded(NbwuKind kind, const SyNonbondedKit<double, double2> &poly_nbk,
125 const SeMaskSynthesisReader &poly_ser, MMControlKit<double> *ctrl,
128 ISWorkspaceKit<double> *iswk, EvaluateForce eval_force,
129 EvaluateEnergy eval_energy, const int2 bt, const int2 gbr_bt,
130 const int2 gbd_bt, double clash_minimum_distance = 0.0,
131 double clash_ratio = 0.0);
132
133void launchNonbonded(NbwuKind kind, const SyNonbondedKit<float, float2> &poly_nbk,
134 const SeMaskSynthesisReader &poly_ser, MMControlKit<float> *ctrl,
137 ISWorkspaceKit<float> *iswk, EvaluateForce eval_force,
138 EvaluateEnergy eval_energy, AccumulationMethod force_sum, const int2 bt,
139 const int2 gbr_bt, const int2 gbd_bt, float clash_minimum_distance = 0.0f,
140 float clash_ratio = 0.0f);
141
142void launchNonbonded(PrecisionModel prec, const AtomGraphSynthesis &poly_ag,
143 const StaticExclusionMaskSynthesis &poly_se,
145 Thermostat *heat_bath, ScoreCard *sc, CacheResource *tb_space,
146 ImplicitSolventWorkspace *ism_space, EvaluateForce eval_force,
147 EvaluateEnergy eval_energy, AccumulationMethod force_sum,
148 const CoreKlManager &launcher, double clash_minimum_distance = 0.0,
149 double clash_ratio = 0.0);
150
151void launchNonbonded(PrecisionModel prec, const AtomGraphSynthesis &poly_ag,
152 const StaticExclusionMaskSynthesis &poly_se,
154 Thermostat *heat_bath, ScoreCard *sc, CacheResource *tb_space,
155 ImplicitSolventWorkspace *ism_space, EvaluateForce eval_force,
156 EvaluateEnergy eval_energy, const CoreKlManager &launcher,
157 double clash_minimum_distance = 0.0, double clash_ratio = 0.0);
159
160} // namespace energy
161} // namespace stormm
162
163#endif
A class to guide the implementation of GPU kernels, with selected thread counts per block and block c...
Definition core_kernel_manager.h:56
An object to hold temporary data for a particular work unit (whether bonded or non-bonded),...
Definition cacheresource.h:63
Track the energy components of a collection of systems in an HPC-capable array. This object uses the ...
Definition scorecard.h:101
A collection of contol data for molecular mechanics simulations, conveying the current step number,...
Definition mm_controls.h:100
A collection of one or more AtomGraph objects, with similar components arranged in contiguous arrays ...
Definition atomgraph_synthesis.h:55
A small collection of arrays to manage temporary accumulators for computing Born radii and their deri...
Definition implicit_solvent_workspace.h:65
A fixed-precision representation of coordinates, velocities, and forces to manage a set of simulation...
Definition phasespace_synthesis.h:325
An exclusion mask object for a compilation of systems. All systems are represented in full detail,...
Definition static_mask_synthesis.h:54
Store the parameters for a simulation thermostat. Includes Berendsen, Andersen, and Langevin methods....
Definition thermostat.h:221
Abstract for the CacheResource object, accessible as a C-style struct and suitable for passing to GPU...
Definition cacheresource.h:17
Writeable abstract for the ScoreCard object, useful for accumulating energies in many kernels.
Definition scorecard.h:64
The C-style, always writeable abstract for the MolecularMechanicsControls object. To not be able to m...
Definition mm_controls.h:52
A simple abstract for the implicit solvent workspace. There are not readers and writers as the only u...
Definition implicit_solvent_workspace.h:23
The writer for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:87
The read-only abstract for a static exclusion mask compilation. This provides access in a similar for...
Definition static_mask_synthesis.h:20
Collect the critical non-bonded parameters and masking information for work unit-based evaluation of ...
Definition synthesis_abstracts.h:181
Partially writeable abstract for the Thermostat object. As with the MMControlKit struct (see the libr...
Definition thermostat.h:58