2#ifndef STORMM_MAP_DENSITY_H
3#define STORMM_MAP_DENSITY_H
6#include "Accelerator/core_kernel_manager.h"
7#include "DataTypes/common_types.h"
8#include "DataTypes/stormm_vector_types.h"
9#include "Math/bspline.h"
10#include "Math/math_enumerators.h"
11#include "Math/rounding.h"
12#include "MolecularMechanics/mm_controls.h"
13#include "Numerics/split_fixed_precision.h"
14#include "Structure/local_arrangement.h"
15#include "Structure/structure_enumerators.h"
16#include "Synthesis/atomgraph_synthesis.h"
17#include "Synthesis/synthesis_abstracts.h"
19#include "energy_enumerators.h"
25using card::CoreKlManager;
26using data_types::isFloatingPointScalarType;
27using mm::MolecularMechanicsControls;
28using mm::MMControlKit;
29using numerics::hostDoubleToInt63;
30using numerics::hostDoubleToInt95;
32using stmath::bSplineNoUnity;
33using stmath::BSplineUnity;
35using structure::imageCoordinates;
36using structure::ImagingMethod;
37using synthesis::AtomGraphSynthesis;
38using synthesis::SyNonbondedKit;
39using topology::AtomGraph;
40using topology::NonbondedKit;
41using trajectory::CoordinateFrame;
42using trajectory::CoordinateFrameReader;
49void matchThemes(NonbondedTheme pm_theme, NonbondedTheme cg_theme);
73template <
typename Tcalc,
typename Tgr
id>
74void particleAlignment(Tcalc x, Tcalc y, Tcalc z, Tcalc inv_lpos_scale,
const Tcalc* umat,
75 int cg_mesh_ticks,
int cell_i,
int cell_j,
int cell_k, Tgrid *a_cof,
76 Tgrid *b_cof, Tgrid *c_cof,
int bspline_order,
int *grid_a,
int *grid_b,
105template <
typename Tcalc,
typename Tgr
id>
106void spreadDensity(
const Tcalc* a_cof,
const Tcalc* b_cof,
const Tcalc* c_cof,
int bspline_order,
107 int grid_root_a,
int grid_root_b,
int grid_root_c,
const uint4 grid_dims,
108 FFTMode fft_staging, Tgrid* grid_data,
int* overflow =
nullptr,
109 Tcalc mesh_scaling_factor = 1.0);
129template <
typename T,
typename Tacc,
typename Tcalc,
typename Tcalc2,
typename T4>
130void accumulateCellDensity(
PMIGridWriter *pm_wrt,
int sysid,
int cell_i,
int cell_j,
int cell_k,
134template <
typename T,
typename Tacc,
typename Tcalc,
typename Tcalc2,
typename T4>
135void accumulateCellDensity(
PMIGridAccumulator *pm_acc,
int sysid,
int cell_i,
int cell_j,
170template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
174template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
182 QMapMethod approach,
PMIGrid *pm);
187 QMapMethod approach,
PMIGrid *pm);
189template <
typename T,
typename Tacc,
typename Tcalc,
typename T4>
199template <
typename Tcalc>
201 NonbondedTheme theme, FFTMode fft_staging,
int grid_dim_a,
202 int grid_dim_b,
int grid_dim_c,
int order = default_bspline_order,
203 BSplineUnity unification = BSplineUnity::CENTER_FILL);
206 NonbondedTheme theme, FFTMode fft_staging,
int grid_dim_a = -1,
207 int grid_dim_b = -1,
int grid_dim_c = -1,
208 int order = default_bspline_order);
211 NonbondedTheme theme, FFTMode fft_staging,
int grid_dim_a = -1,
212 int grid_dim_b = -1,
int grid_dim_c = -1,
213 int order = default_bspline_order);
231template <
typename T,
typename T4>
232void unrollMapDensityCall(
PMIGrid *pm,
size_t cg_tacc,
size_t cg_tcalc,
235template <
typename T,
typename Tacc,
typename T4>
293#include "map_density.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
An object to manage the spatial decomposition of a system of particles. The general strategy is to ar...
Definition cellgrid.h:562
An object to hold a series of meshes for accumulating density from condensed-phase molecular systems ...
Definition pmigrid.h:271
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 struct to hold information relating to an Amber topology. This struct's member functions are limite...
Definition atomgraph.h:50
Store the coordinates and box information for a frame, only. This abridged struct can serve when the ...
Definition coordinateframe.h:111
Read-only abstract for the CellGrid object. This is unused in typical MD applications,...
Definition cellgrid.h:296
A writeable abstract which reinterprets some pointers to enable split fixed-precision accumulation wi...
Definition pmigrid.h:163
A writeable abstract for the Particle-Mesh Interaction Grid class.
Definition pmigrid.h:74
The C-style, always writeable abstract for the MolecularMechanicsControls object. To not be able to m...
Definition mm_controls.h:52
Collect the critical non-bonded parameters and masking information for work unit-based evaluation of ...
Definition synthesis_abstracts.h:181
Information needed for non-bonded real-space calculations. Templating is used as above,...
Definition atomgraph_abstracts.h:287
Collect C-style pointers for the elements of a read-only CoordinateFrame object.
Definition coordinateframe.h:65