2#ifndef STORMM_CELLGRID_H
3#define STORMM_CELLGRID_H
6#include "Accelerator/core_kernel_manager.h"
7#include "Accelerator/gpu_details.h"
8#include "Accelerator/hybrid.h"
9#include "Constants/behavior.h"
10#include "Constants/fixed_precision.h"
11#include "Constants/hpc_bounds.h"
12#include "DataTypes/common_types.h"
13#include "Math/formulas.h"
14#include "Math/math_enumerators.h"
15#include "Math/matrix_ops.h"
16#include "Math/rounding.h"
17#include "Math/series_ops.h"
18#include "Math/vector_ops.h"
19#include "Numerics/split_fixed_precision.h"
20#include "Parsing/parsing_enumerators.h"
21#include "Parsing/parse.h"
22#include "Potential/energy_enumerators.h"
23#include "Structure/local_arrangement.h"
24#include "Structure/structure_enumerators.h"
25#include "Synthesis/atomgraph_synthesis.h"
26#include "Synthesis/phasespace_synthesis.h"
27#include "Synthesis/synthesis_abstracts.h"
28#include "Topology/atomgraph.h"
29#include "Topology/atomgraph_abstracts.h"
30#include "Topology/atomgraph_enumerators.h"
31#include "Topology/lennard_jones_analysis.h"
32#include "Topology/topology_util.h"
33#include "Trajectory/coordinate_copy.h"
34#include "Trajectory/coordinateframe.h"
35#include "Trajectory/trajectory_enumerators.h"
40using card::CoreKlManager;
41using card::GpuDetails;
43using card::HybridKind;
44using card::HybridTargetLevel;
45using constants::CartesianDimension;
46using constants::ExceptionResponse;
47using constants::PrecisionModel;
48using constants::UnitCellAxis;
49using data_types::getStormmScalarTypeName;
50using data_types::getStormmHpcVectorTypeName;
51using data_types::isFloatingPointScalarType;
52using numerics::force_scale_nonoverflow_bits;
53using numerics::globalpos_scale_nonoverflow_bits;
54using numerics::hostInt63ToLongLong;
55using numerics::hostSplitFPMult;
56using numerics::hostSplitFPSubtract;
57using parse::NumberFormat;
58using parse::realToString;
59using stmath::hessianNormalWidths;
60using stmath::indexingArray;
62using stmath::LimitApproach;
63using stmath::matrixMultiply;
64using stmath::minValue;
65using stmath::maxValue;
67using stmath::nearestFactor;
68using stmath::prefixSumInPlace;
69using stmath::PrefixSumType;
71using structure::imageCoordinates;
72using structure::ImagingMethod;
73using synthesis::AtomGraphSynthesis;
74using synthesis::PhaseSpaceSynthesis;
75using synthesis::PsSynthesisBorders;
76using synthesis::PsSynthesisReader;
77using synthesis::PsSynthesisWriter;
78using synthesis::SyNonbondedKit;
79using topology::AtomGraph;
80using topology::hasVdwProperties;
81using topology::inferCombiningRule;
82using topology::NonbondedKit;
83using topology::UnitCellType;
84using trajectory::coordCopy;
85using trajectory::CoordinateCycle;
86using trajectory::CoordinateFrame;
87using trajectory::CoordinateFrameWriter;
88using trajectory::TrajectoryKind;
92constexpr size_t default_cellgrid_base_capacity = 8;
93constexpr size_t cellgrid_tp_excl_allotment = 12;
94constexpr size_t cellgrid_total_excl_allotment = 15;
95constexpr int default_mesh_ticks = 4;
96constexpr int maximum_cellgrid_cell_count = 268435456;
97constexpr int maximum_xl_cell_count = 64;
98constexpr double minimum_cell_width = 2.5;
99constexpr double maximum_cell_width = 12.0;
100constexpr int maximum_cellgrid_systems = 65536;
101static const int maximum_cellgrid_span = 1023;
102static const int maximum_wandering_atoms = 256;
103static const int sp_charge_index_bits = 23;
104static const int dp_charge_index_bits = 32;
105static const int sp_charge_index_mask = 0x7ffff;
106static const llint dp_charge_index_mask = 0xffffffffLL;
121static const ullint required_ring_mask = 0x1018041408242028LLU;
122static const uint required_cntr_mask = 0x3f;
123static const ullint prohibited_ring_mask = 0x8c80b080b0808c80LLU;
124static const uint prohibited_cntr_mask = 0xbc;
131static const int std_max_migration_notes = 1920;
132static const int ext_max_migration_notes = 4608;
137template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
struct CellGridWriter {
141 CellGridWriter(NonbondedTheme theme_in,
int system_count_in,
int total_cell_count_in,
142 int total_chain_count_in,
int mesh_ticks_in, uint cell_base_capacity_in,
143 float lpos_scale_in,
float inv_lpos_scale_in,
float frc_scale_in,
144 const ullint* system_cell_grids_in, Tcalc* system_cell_umat_in,
146 uint2* cell_limits_alt_in,
const uint* chain_limits_in,
147 const int* system_chain_bounds_in,
const int* chain_system_owner_in, T4* image_in,
148 T4* image_alt_in, uchar* migration_keys_in,
int* wander_count_in,
149 int* wander_count_alt_in,
uint2* wanderers_in,
int* nonimg_atom_idx_in,
150 int* nonimg_atom_idx_alt_in, uint* img_atom_idx_in, uint* img_atom_idx_alt_in,
151 ushort* img_atom_chn_cell_in, ushort* img_atom_chn_cell_alt_in,
152 const int* nt_groups_in, ushort* relevance_in, Tacc* xfrc_in, Tacc* yfrc_in,
153 Tacc* zfrc_in,
int* xfrc_ovrf_in,
int* yfrc_ovrf_in,
int* zfrc_ovrf_in);
296template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
struct CellGridReader {
301 CellGridReader(NonbondedTheme theme_in,
int system_count_in,
int total_cell_count_in,
302 int total_chain_count_in,
int mesh_ticks_in, uint cell_base_capacity_in,
303 float lpos_scale_in,
float inv_lpos_scale_in,
float inv_frc_scale_in,
304 const ullint* system_cell_grids_in,
const Tcalc* system_cell_umat_in,
305 const T* system_cell_invu_in,
const T* system_pmig_invu_in,
306 const uint2* cell_limits_in,
const uint* chain_limits_in,
307 const int* system_chain_bounds_in,
const int* chain_system_owner_in,
308 const T4* image_in,
const int* nonimg_atom_idx_in,
const uint* img_atom_idx_in,
309 const ushort* img_atom_chn_cell_in,
const int* nt_groups_in,
310 const ushort* relevance_in,
const Tacc* xfrc_in,
const Tacc* yfrc_in,
311 const Tacc* zfrc_in,
const int* xfrc_ovrf_in,
const int* yfrc_ovrf_in,
312 const int* zfrc_ovrf_in);
426 CellOriginsWriter(
int stride_in, llint* ax_in,
int* ax_ovrf_in, llint* bx_in,
int* bx_ovrf_in,
427 llint* by_in,
int* by_ovrf_in, llint* cx_in,
int* cx_ovrf_in, llint* cy_in,
428 int* cy_ovrf_in, llint* cz_in,
int* cz_ovrf_in);
465 CellOriginsReader(
int stride_in,
const llint* ax_in,
const int* ax_ovrf_in,
const llint* bx_in,
466 const int* bx_ovrf_in,
const llint* by_in,
const int* by_ovrf_in,
467 const llint* cx_in,
const int* cx_ovrf_in,
const llint* cy_in,
468 const int* cy_ovrf_in,
const llint* cz_in,
const int* cz_ovrf_in);
562template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
class CellGrid {
587 double cutoff_in,
double padding_in,
int mesh_subdivisions_in, NonbondedTheme theme_in,
588 uint cell_base_capacity_in = default_cellgrid_base_capacity,
589 ExceptionResponse policy_in = ExceptionResponse::WARN);
592 double cutoff_in,
double padding_in,
int mesh_subdivisions_in, NonbondedTheme theme_in,
593 uint cell_base_capacity_in = default_cellgrid_base_capacity,
594 ExceptionResponse policy_in = ExceptionResponse::WARN);
597 double cutoff_in,
double padding_in,
int mesh_subdivisions_in, NonbondedTheme theme_in,
598 uint cell_base_capacity_in = default_cellgrid_base_capacity,
599 ExceptionResponse policy_in = ExceptionResponse::WARN);
632 int getCellCount(
int index, CartesianDimension axis)
const;
675 uint
getImageIndex(
int system_index,
int atom_index, CoordinateCycle orientation)
const;
718 HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
743 HybridTargetLevel tier = HybridTargetLevel::HOST);
748 data(CoordinateCycle orientation, HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
751 data(HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
758 templateFreeData(CoordinateCycle orientation, HybridTargetLevel tier = HybridTargetLevel::HOST);
765 HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
786 HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
791 HybridTargetLevel tier = HybridTargetLevel::HOST);
899 int total_cell_count;
900 int total_chain_count;
903 uint cell_base_capacity;
906 double effective_cutoff;
909 int mesh_subdivisions;
912 ExceptionResponse policy;
914 NonbondedTheme theme;
916 TinyBoxPresence has_tiny_box;
925 CoordinateCycle cycle_position;
936 int localpos_scale_bits;
938 double localpos_scale;
940 double localpos_inverse_scale;
1133 int origin_offset_stride;
1224 void validateCoordinateSynthesis()
const;
1231 double validateEffectiveCutoff(
double eff_cut_in, ExceptionResponse policy_in)
const;
1240 void validateAtomIndex(
int system_index,
int atom_index,
const char* caller)
const;
1247 void computeFixedPrecisionModel(
const std::vector<double> &invu_samples);
1258 void tallyCellPopulations(std::vector<int> *cell_populations,
int system_index,
int na,
int nb,
1266 void populateImage(CoordinateCycle cyc);
1270 void rebaseRulers();
1273 void allocateRulers();
1276 void drawNeighborListRulers();
1299 void prepareWorkGroups();
1302template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
1304 const HybridTargetLevel tier = HybridTargetLevel::HOST,
1325template <
typename Tsrc,
typename Tcalc,
typename Tcalc2>
1326Tcalc sourceMagnitude(NonbondedTheme requested_property, NonbondedTheme cg_content, Tsrc q,
1333template <
typename Tsrc>
1334int sourceIndex(NonbondedTheme requested_property, NonbondedTheme cg_content, Tsrc q,
1342template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
1345template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
1348template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
1352template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
1372template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
1379 const HybridTargetLevel tier = HybridTargetLevel::HOST,
1412template <
typename T>
1413int3 locateDecompositionCell(T *x, T *y, T *z,
const double* umat,
const double* invu,
1414 double cell_na,
double cell_nb,
double cell_nc,
1415 UnitCellType unit_cell = UnitCellType::TRICLINIC,
double scale = 1.0);
1417template <
typename T>
1418void locateDecompositionCell(T* x, T* y, T* z,
int* cell_idx,
int natom,
const double* umat,
1419 const double* invu,
int cell_na,
int cell_nb,
int cell_nc,
1420 UnitCellType unit_cell = UnitCellType::TRICLINIC,
double scale = 1.0);
1422template <
typename T>
1423void locateDecompositionCell(std::vector<T> *x, std::vector<T> *y, std::vector<T> *z,
1424 std::vector<int> *cell_idx,
const double* umat,
const double* invu,
1425 int cell_na,
int cell_nb,
int cell_nc,
1426 UnitCellType unit_cell = UnitCellType::TRICLINIC,
double scale = 1.0);
1428template <
typename T>
1430 const double* umat,
const double* invu,
int cell_na,
int cell_nb,
1431 int cell_nc, UnitCellType unit_cell = UnitCellType::TRICLINIC,
1432 double scale = 1.0);
1443double computeMigrationRate(
double effective_cutoff,
double sigma);
1457int3 optimizeCellConfiguration(
int cell_na,
int cell_nb,
int cell_nc,
int subdivisions);
1475void loadRuler(
int cell_count,
const int95_t cell_len,
const int95_t box_len,
int remainder,
1476 llint* ruler,
int* ruler_ovrf);
1478#ifdef STORMM_USE_HPC
1491cudaFuncAttributes queryMigrationKernelRequirements(PrecisionModel coord_prec,
1492 NeighborListKind neighbor_list,
int stage,
1520 const int2 bt_i,
const int2 bt_ii);
1529 const int2 bt_i,
const int2 bt_ii);
1573 size_t tc_acc,
const GpuDetails &gpu, CellGridAction process);
1577 CellGridAction process);
1581 CellGridAction process);
1589#include "cellgrid.tpp"
A class to guide the implementation of GPU kernels, with selected thread counts per block and block c...
Definition core_kernel_manager.h:56
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
An object to manage the spatial decomposition of a system of particles. The general strategy is to ar...
Definition cellgrid.h:562
double getCutoff() const
Get the particle-particle cutoff defining the neighbor list.
int getSystemCount() const
Get the number of systems in the object.
int getTotalCellCount() const
Get the total number of cells allocated in the object.
CellGridWriter< T, Tacc, Tcalc, T4 > data(CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST)
Obtain the object's abstract in order to access its members in C-programming fashion,...
int getCellCount(int index) const
Get the number of cells allotted to any one system.
const CellOriginsReader getRulers(CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const
Obtain the object's rulers for determining the origins of each neighbor list cell in terms of the fix...
void updatePositions(PhaseSpaceSynthesis *dest, HybridTargetLevel tier, const GpuDetails &gpu)
Update the positions and cells of residence for all particles based on the current positions in the a...
void markImageRelevance(HybridTargetLevel tier=HybridTargetLevel::HOST, const GpuDetails &gpu=null_gpu)
Compute whether various atoms may be within range of the tower when they are in the plate of various ...
const PhaseSpaceSynthesis * getCoordinateSynthesisPointer() const
Get a const pointer to the coordinate synthesis served by this object.
TinyBoxPresence getTinyBoxPresence() const
Get the presence of a tiny unit cell anywhere in the synthesis.
void updateCyclePosition()
Update the object's cycle position as it participates in the WHITE:BLACK tick-tock mechanics of other...
CellGrid(const PhaseSpaceSynthesis *poly_ps_ptr_in, const AtomGraphSynthesis *poly_ag_ptr_in, double cutoff_in, double padding_in, int mesh_subdivisions_in, NonbondedTheme theme_in, uint cell_base_capacity_in=default_cellgrid_base_capacity, ExceptionResponse policy_in=ExceptionResponse::WARN)
The constructor accepts an associated PhaseSpaceSynthesis object and a precision model....
void contributeForces(PhaseSpaceSynthesis *dest, HybridTargetLevel tier, const GpuDetails &gpu) const
Contribute forces accumulated in the cell grid back to a coordinate synthesis with its own force accu...
int getPositionScalingBits() const
Get the number of bits in the fixed-precision format.
int2 getChainLocation(int system_index, int atom_index, CoordinateCycle orientation) const
Get the chain index of an atom based on its system and topological atom index. The chain index is ret...
uint getCellBaseCapacity() const
Get the base capacity of any particular cell in the grid. All systems' cells share the same base capa...
const AtomGraphSynthesis * getTopologySynthesisPointer() const
Get a const pointer to the topology synthesis served by this object.
void initializeForces(HybridTargetLevel tier=HybridTargetLevel::HOST, const GpuDetails &gpu=null_gpu)
Initialize forces for the cell grid, on the CPU host or GPU device. This standalone feature provides ...
uint getImageIndex(int system_index, int atom_index, CoordinateCycle orientation) const
Find the image location of an atom based on its system and topological atom number.
int4 getCellLocation(int system_index, int atom_index, CoordinateCycle orientation) const
Find the cell grid location of an atom based on its system and topological atom number....
CellGridWriter< void, void, void, void > templateFreeData(CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST)
Obtain the object's abstract with templating removed. Overloading and descriptions of parameters foll...
const PsSynthesisBorders getUnitCellTransforms(CoordinateCycle orientation, HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get a miniature abstract of the underlying coordinate synthesis containing pointers to the arays of u...
CoordinateCycle getCyclePosition() const
Get the position in the time cycle.
const CellGrid< T, Tacc, Tcalc, T4 > * getSelfPointer() const
Get a pointer to the object itself, useful if the object is only available by const reference.
double getPadding() const
Get the padding incorporated into each neighbor list cell.
double getEffectiveCutoff() const
Get the effective cutoff.
CellGrid(const CellGrid &original)
The presence of POINTER-kind Hybrid objects in the cell origin rulers invalidates the default copy an...
NonbondedTheme getTheme() const
Get the non-bonded theme of this cell grid–does it hold atoms with only electrostatic or van-der Waal...
int getMeshSubdivisions() const
Get the number of mesh elements spanning each spatial decomposition cell. The "mesh" refers to a part...
A collection of one or more AtomGraph objects, with similar components arranged in contiguous arrays ...
Definition atomgraph_synthesis.h:55
A fixed-precision representation of coordinates, velocities, and forces to manage a set of simulation...
Definition phasespace_synthesis.h:325
Definition stormm_vector_types.h:22
Definition stormm_vector_types.h:27
Definition stormm_vector_types.h:33
A mixed tuple for 95-bit integer accumulation. This is the proper way to take double-precision floati...
Definition stormm_vector_types.h:265
Definition stormm_vector_types.h:40
Read-only abstract for the CellGrid object. This is unused in typical MD applications,...
Definition cellgrid.h:296
const T4 * image
The array of atom coordinates and property information.
Definition cellgrid.h:387
CellGridReader(NonbondedTheme theme_in, int system_count_in, int total_cell_count_in, int total_chain_count_in, int mesh_ticks_in, uint cell_base_capacity_in, float lpos_scale_in, float inv_lpos_scale_in, float inv_frc_scale_in, const ullint *system_cell_grids_in, const Tcalc *system_cell_umat_in, const T *system_cell_invu_in, const T *system_pmig_invu_in, const uint2 *cell_limits_in, const uint *chain_limits_in, const int *system_chain_bounds_in, const int *chain_system_owner_in, const T4 *image_in, const int *nonimg_atom_idx_in, const uint *img_atom_idx_in, const ushort *img_atom_chn_cell_in, const int *nt_groups_in, const ushort *relevance_in, const Tacc *xfrc_in, const Tacc *yfrc_in, const Tacc *zfrc_in, const int *xfrc_ovrf_in, const int *yfrc_ovrf_in, const int *zfrc_ovrf_in)
As is other abstracts, the constructor takes a list of inputs for all member variables.
const Tcalc * system_cell_umat
Definition cellgrid.h:351
const int * xfrc_ovrf
Overflow bits for xfrc.
Definition cellgrid.h:415
const int total_cell_count
The total number of decomposition cells across all systems.
Definition cellgrid.h:329
const float lpos_scale
Definition cellgrid.h:341
const float inv_frc_scale
Definition cellgrid.h:347
CellGridReader(const CellGridReader &original)=default
The const-ness of all members implicitly deletes the copy and move assignment operators,...
const int * system_chain_bounds
Definition cellgrid.h:377
const int * yfrc_ovrf
Overflow bits for yfrc.
Definition cellgrid.h:416
const Tacc * xfrc
Accumulated Cartesian X forces on all imaged particles.
Definition cellgrid.h:412
const int twice_cell_count
Twice the number of decomposition cells across all systems.
Definition cellgrid.h:330
const ushort * relevance
Definition cellgrid.h:408
const T * system_cell_invu
Definition cellgrid.h:354
const int * nonimg_atom_idx
Definition cellgrid.h:388
const Tacc * zfrc
Accumulated Cartesian Z forces on all imaged particles.
Definition cellgrid.h:414
const ushort * img_atom_chn_cell
Definition cellgrid.h:400
const float inv_lpos_scale
Definition cellgrid.h:345
const Tacc * yfrc
Accumulated Cartesian Y forces on all imaged particles.
Definition cellgrid.h:413
const uint2 * cell_limits
Definition cellgrid.h:360
const uint cell_base_capacity
Definition cellgrid.h:337
const int * nt_groups
Definition cellgrid.h:403
const ullint * system_cell_grids
Definition cellgrid.h:349
const uint * img_atom_idx
Definition cellgrid.h:395
const int mesh_ticks
Definition cellgrid.h:334
const NonbondedTheme theme
Definition cellgrid.h:326
const int * zfrc_ovrf
Overflow bits for zfrc.
Definition cellgrid.h:417
const int system_count
Number of systems whose spatial decompositions are stored.
Definition cellgrid.h:328
const uint * chain_limits
Definition cellgrid.h:371
const T * system_pmig_invu
Definition cellgrid.h:357
const int * chain_system_owner
Definition cellgrid.h:384
const int total_chain_count
Definition cellgrid.h:331
Writeable abstract for the CellGrid object, able to receive new coordinates or accumulate forces.
Definition cellgrid.h:137
const int * nt_groups
Definition cellgrid.h:273
const NonbondedTheme theme
Definition cellgrid.h:162
T * system_pmig_invu
Definition cellgrid.h:194
CellGridWriter(const CellGridWriter &original)=default
The presence of const array sizing members implicitly deletes the copy and move assignment operators,...
Tacc * zfrc
Accumulators for Cartesian Z forces on imaged particles.
Definition cellgrid.h:284
CellGridWriter(NonbondedTheme theme_in, int system_count_in, int total_cell_count_in, int total_chain_count_in, int mesh_ticks_in, uint cell_base_capacity_in, float lpos_scale_in, float inv_lpos_scale_in, float frc_scale_in, const ullint *system_cell_grids_in, Tcalc *system_cell_umat_in, T *system_cell_invu_in, T *system_pmig_invu, uint2 *cell_limits_in, uint2 *cell_limits_alt_in, const uint *chain_limits_in, const int *system_chain_bounds_in, const int *chain_system_owner_in, T4 *image_in, T4 *image_alt_in, uchar *migration_keys_in, int *wander_count_in, int *wander_count_alt_in, uint2 *wanderers_in, int *nonimg_atom_idx_in, int *nonimg_atom_idx_alt_in, uint *img_atom_idx_in, uint *img_atom_idx_alt_in, ushort *img_atom_chn_cell_in, ushort *img_atom_chn_cell_alt_in, const int *nt_groups_in, ushort *relevance_in, Tacc *xfrc_in, Tacc *yfrc_in, Tacc *zfrc_in, int *xfrc_ovrf_in, int *yfrc_ovrf_in, int *zfrc_ovrf_in)
As is other abstracts, the constructor takes a list of inputs for all member variables.
ushort * img_atom_chn_cell
Definition cellgrid.h:268
const int total_chain_count
Definition cellgrid.h:167
int * zfrc_ovrf
Overflow bits for zfrc.
Definition cellgrid.h:287
ushort * img_atom_chn_cell_alt
Definition cellgrid.h:271
int * wander_count_alt
Definition cellgrid.h:242
uint2 * wanderers
Definition cellgrid.h:247
int * wander_count
Definition cellgrid.h:239
Tacc * yfrc
Accumulators for Cartesian Y forces on imaged particles.
Definition cellgrid.h:283
int * nonimg_atom_idx_alt
Definition cellgrid.h:259
const uint * chain_limits
Definition cellgrid.h:210
const int mesh_ticks
Definition cellgrid.h:170
T4 * image_alt
Definition cellgrid.h:229
Tacc * xfrc
Accumulators for Cartesian X forces on imaged particles.
Definition cellgrid.h:282
uint2 * cell_limits_alt
Definition cellgrid.h:208
const int * system_chain_bounds
Definition cellgrid.h:216
uint * img_atom_idx
Definition cellgrid.h:261
const int total_cell_count
The total number of decomposition cells across all systems.
Definition cellgrid.h:165
const ullint * system_cell_grids
Definition cellgrid.h:185
uchar * migration_keys
Definition cellgrid.h:235
ushort * relevance
Definition cellgrid.h:278
int * xfrc_ovrf
Overflow bits for xfrc.
Definition cellgrid.h:285
int * nonimg_atom_idx
Definition cellgrid.h:252
int * yfrc_ovrf
Overflow bits for yfrc.
Definition cellgrid.h:286
const int twice_cell_count
Twice the number of decomposition cells across all systems.
Definition cellgrid.h:166
uint2 * cell_limits
Definition cellgrid.h:197
const int * chain_system_owner
Definition cellgrid.h:223
const int system_count
Number of systems whose spatial decompositions are stored.
Definition cellgrid.h:164
const float inv_lpos_scale
Definition cellgrid.h:181
const float lpos_scale
Definition cellgrid.h:177
uint * img_atom_idx_alt
Definition cellgrid.h:266
Tcalc * system_cell_umat
Definition cellgrid.h:188
T4 * image
Definition cellgrid.h:226
const uint cell_base_capacity
Definition cellgrid.h:173
T * system_cell_invu
Definition cellgrid.h:191
const float frc_scale
Definition cellgrid.h:183
Definition cellgrid.h:459
const int * bx_ovrf
Overflow bits for projection of the unit cell B axis along Cartesian X.
Definition cellgrid.h:496
const llint * by
Projection of the unit cell B axis along Cartesian Y.
Definition cellgrid.h:491
const llint * ax
Definition cellgrid.h:487
const int * cy_ovrf
Overflow bits for projection of the unit cell C axis along Cartesian Y.
Definition cellgrid.h:499
const llint * bx
Projection of the unit cell B axis along Cartesian X.
Definition cellgrid.h:490
const int * cz_ovrf
Overflow bits for projection of the unit cell C axis along Cartesian Z.
Definition cellgrid.h:500
const llint * cz
Projection of the unit cell C axis along Cartesian z.
Definition cellgrid.h:494
const int * ax_ovrf
Overflow bits for projection of the unit cell A axis along Cartesian X.
Definition cellgrid.h:495
const int * cx_ovrf
Overflow bits for projection of the unit cell C axis along Cartesian X.
Definition cellgrid.h:498
const llint * cx
Projection of the unit cell C axis along Cartesian X.
Definition cellgrid.h:492
CellOriginsReader(const CellOriginsReader &original)=default
The presence of the const member "stride" invalidates the copy and move assignment operators....
CellOriginsReader(int stride_in, const llint *ax_in, const int *ax_ovrf_in, const llint *bx_in, const int *bx_ovrf_in, const llint *by_in, const int *by_ovrf_in, const llint *cx_in, const int *cx_ovrf_in, const llint *cy_in, const int *cy_ovrf_in, const llint *cz_in, const int *cz_ovrf_in)
The constructor takes a list of valus for all member variables. As with many other abstracts,...
Definition cellgrid.cpp:20
const int * by_ovrf
Overflow bits for projection of the unit cell B axis along Cartesian Y.
Definition cellgrid.h:497
const llint * cy
Projection of the unit cell C axis along Cartesian Y.
Definition cellgrid.h:493
const int stride
The stride taken between systems in any of the arrays below.
Definition cellgrid.h:486
Definition cellgrid.h:421
CellOriginsWriter(int stride_in, llint *ax_in, int *ax_ovrf_in, llint *bx_in, int *bx_ovrf_in, llint *by_in, int *by_ovrf_in, llint *cx_in, int *cx_ovrf_in, llint *cy_in, int *cy_ovrf_in, llint *cz_in, int *cz_ovrf_in)
The constructor takes a list of valus for all member variables. There is only one sizing constant–all...
Definition cellgrid.cpp:10
llint * bx
Projection of the unit cell B axis along Cartesian X.
Definition cellgrid.h:445
CellOriginsWriter(const CellOriginsWriter &original)=default
The presence of the const member "stride" invalidates the copy and move assignment operators....
const int stride
The stride taken between systems in any of the arrays below.
Definition cellgrid.h:441
llint * ax
Definition cellgrid.h:442
int * cx_ovrf
Overflow bits for projection of the unit cell C axis along Cartesian X.
Definition cellgrid.h:453
int * ax_ovrf
Overflow bits for projection of the unit cell A axis along Cartesian X.
Definition cellgrid.h:450
int * bx_ovrf
Overflow bits for projection of the unit cell B axis along Cartesian X.
Definition cellgrid.h:451
llint * by
Projection of the unit cell B axis along Cartesian Y.
Definition cellgrid.h:446
int * cy_ovrf
Overflow bits for projection of the unit cell C axis along Cartesian Y.
Definition cellgrid.h:454
llint * cx
Projection of the unit cell C axis along Cartesian X.
Definition cellgrid.h:447
llint * cy
Projection of the unit cell C axis along Cartesian Y.
Definition cellgrid.h:448
int * by_ovrf
Overflow bits for projection of the unit cell B axis along Cartesian Y.
Definition cellgrid.h:452
llint * cz
Projection of the unit cell C axis along Cartesian z.
Definition cellgrid.h:449
int * cz_ovrf
Overflow bits for projection of the unit cell C axis along Cartesian Z.
Definition cellgrid.h:455
A read-only abstract for the system demarcations in the object. This information is sometimes critica...
Definition phasespace_synthesis.h:61
The reader for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:199
The writer for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:87
Collect the critical non-bonded parameters and masking information for work unit-based evaluation of ...
Definition synthesis_abstracts.h:181