2#ifndef STORMM_IMPLICIT_SOLVENT_WORKSPACE_H
3#define STORMM_IMPLICIT_SOLVENT_WORKSPACE_H
7#include "Accelerator/gpu_details.h"
8#include "Accelerator/hybrid.h"
9#include "Constants/behavior.h"
10#include "Trajectory/trajectory_enumerators.h"
15using card::GpuDetails;
17using card::HybridTargetLevel;
18using constants::PrecisionModel;
19using trajectory::CoordinateCycle;
26 ISWorkspaceKit(
int fp_bits_in, llint* psi_in,
int* psi_overflow_in, llint* sum_deijda_in,
27 int* sum_deijda_overflow_in, llint* alt_psi_in,
int* alt_psi_overflow_in,
28 llint* alt_sum_deijda_in,
int* alt_sum_deijda_overflow_in);
119 HybridTargetLevel tier = HybridTargetLevel::HOST);
128 HybridTargetLevel tier = HybridTargetLevel::HOST);
151 void initialize(HybridTargetLevel tier = HybridTargetLevel::HOST,
152 CoordinateCycle orientation = CoordinateCycle::WHITE,
159 void launchInitialization(
const GpuDetails &gpu,
160 CoordinateCycle orientation = CoordinateCycle::WHITE);
165 int padded_atom_count;
170 CoordinateCycle cycle_position;
194 void rebasePointers();
200#include "implicit_solvent_workspace.tpp"
Pertinent aspects of one particular GPU. Condensing the data for each GPU in this manner helps to ens...
Definition gpu_details.h:27
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
ImplicitSolventWorkspace(const Hybrid< int > &atom_starts, const Hybrid< int > &atom_counts, int bit_count)
The object contains arrays to store Born radii and derivatives to very high precision.
Definition implicit_solvent_workspace.cpp:13
CoordinateCycle getCyclePosition() const
Get the object's current coordinate cycle position.
Definition implicit_solvent_workspace.cpp:157
ISWorkspaceKit< double > dpData(CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST)
Get the double-precision abstract, containing pointers to data on the host or device.
Definition implicit_solvent_workspace.cpp:162
ImplicitSolventWorkspace(const Hybrid< int > &atom_starts, const Hybrid< int > &atom_counts, int bit_count)
The object contains arrays to store Born radii and derivatives to very high precision.
Definition implicit_solvent_workspace.cpp:13
void initialize(HybridTargetLevel tier=HybridTargetLevel::HOST, CoordinateCycle orientation=CoordinateCycle::WHITE, const GpuDetails &gpu=null_gpu)
Set the Generalized Born radii and radii derivative accumulators to zero.
Definition implicit_solvent_workspace.cpp:234
ISWorkspaceKit< float > spData(CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST)
Get the single-precision abstract, containing pointers to data on the host or device....
Definition implicit_solvent_workspace.cpp:185
int getFixedPrecisionBits() const
Get the precision in which Born radii and sums of the per-atom energy derivatives are stored.
Definition implicit_solvent_workspace.cpp:152
void updateCyclePosition()
Increment the object's cycle counter.
Definition implicit_solvent_workspace.cpp:222
ISWorkspaceKit(int fp_bits_in, llint *psi_in, int *psi_overflow_in, llint *sum_deijda_in, int *sum_deijda_overflow_in, llint *alt_psi_in, int *alt_psi_overflow_in, llint *alt_sum_deijda_in, int *alt_sum_deijda_overflow_in)
The constructor takes a straight list of arguments.
A simple abstract for the implicit solvent workspace. There are not readers and writers as the only u...
Definition implicit_solvent_workspace.h:23
int * alt_psi_ovrf
Alternate array for psi overflow accumulators.
Definition implicit_solvent_workspace.h:58
ISWorkspaceKit(const ISWorkspaceKit &original)=default
The copy and move constructors are defaulted, assignment operators implicitly deleted due to const me...
const T fp_scale
Definition implicit_solvent_workspace.h:40
ISWorkspaceKit(int fp_bits_in, llint *psi_in, int *psi_overflow_in, llint *sum_deijda_in, int *sum_deijda_overflow_in, llint *alt_psi_in, int *alt_psi_overflow_in, llint *alt_sum_deijda_in, int *alt_sum_deijda_overflow_in)
The constructor takes a straight list of arguments.
llint * alt_sum_deijda
Alternate GB radii derivative accumulators.
Definition implicit_solvent_workspace.h:59
llint * sum_deijda
Definition implicit_solvent_workspace.h:50
int * alt_sum_deijda_ovrf
Alternate GB radii derivative overflow accumulators.
Definition implicit_solvent_workspace.h:60
const T inv_fp_scale
Definition implicit_solvent_workspace.h:42
llint * alt_psi
Alternate array for psi accumulators.
Definition implicit_solvent_workspace.h:57
llint * psi
Definition implicit_solvent_workspace.h:44
const int fp_bits
Fixed-precision bits after the decimal.
Definition implicit_solvent_workspace.h:39
int * sum_deijda_ovrf
Definition implicit_solvent_workspace.h:52
int * psi_ovrf
Definition implicit_solvent_workspace.h:48