2#ifndef STORMM_MESH_COMPONENTS_H
3#define STORMM_MESH_COMPONENTS_H
6#include "Accelerator/hybrid.h"
7#include "DataTypes/stormm_vector_types.h"
8#include "Numerics/split_fixed_precision.h"
9#include "local_arrangement.h"
10#include "mesh_parameters.h"
16using card::HybridTargetLevel;
18using data_types::double3;
28 MeshRulerKit(
const llint* avec_x_in,
const llint* avec_y_in,
const llint* avec_z_in,
29 const llint* bvec_x_in,
const llint* bvec_y_in,
const llint* bvec_z_in,
30 const llint* cvec_x_in,
const llint* cvec_y_in,
const llint* cvec_z_in,
31 const llint* avec_abs_x_in,
const llint* avec_abs_y_in,
const llint* avec_abs_z_in,
32 const int* avec_x_ovrf_in,
const int* avec_y_ovrf_in,
const int* avec_z_ovrf_in,
33 const int* bvec_x_ovrf_in,
const int* bvec_y_ovrf_in,
const int* bvec_z_ovrf_in,
34 const int* cvec_x_ovrf_in,
const int* cvec_y_ovrf_in,
const int* cvec_z_ovrf_in,
35 const int* avec_abs_x_ovrf_in,
const int* avec_abs_y_ovrf_in,
36 const int* avec_abs_z_ovrf_in);
114 const MeshRulerKit data(HybridTargetLevel tier = HybridTargetLevel::HOST)
const;
123# ifdef STORMM_USE_CUDA
182 void rebasePointers();
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
Encode the critical dimensions of a regular, rectilinear mesh. The locations of mesh points as well a...
Definition mesh_parameters.h:121
double3 getMeshLocation(const double3 real_loc) const
Get the location of a point on the mesh based on its coordinates in Cartesian space....
Definition mesh_rulers.cpp:334
const MeshRulerKit data(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get a collection of all relevant pointers for memory on either the CPU host or the GPU device....
Definition mesh_rulers.cpp:365
double3 getRealLocation(const double3 mesh_loc) const
Get the location of a point in Cartesian space based on its coordinates on the mesh....
Definition mesh_rulers.cpp:281
MeshRulers(const MeshParameters &mps=MeshParameters())
The constructor takes a full collection of mesh parameters.
Definition mesh_rulers.cpp:40
double3 getMeshOrigin() const
Get the origin from the rulers themselves.
Definition mesh_rulers.cpp:270
Definition stormm_vector_types.h:117
Definition mesh_rulers.h:21
const llint * cvec_y
Relative Cartesian Y coordinates of c axis tick marks.
Definition mesh_rulers.h:53
const llint * avec_abs_y
Absolute Cartesian Y coordinates of a axis tick marks.
Definition mesh_rulers.h:56
const llint * avec_abs_z
Absolute Cartesian Z coordinates of a axis tick marks.
Definition mesh_rulers.h:57
const int * cvec_y_ovrf
Overflow bits for c axis relative Cartesian Y coordinates.
Definition mesh_rulers.h:65
const int * bvec_x_ovrf
Overflow bits for b axis relative Cartesian X coordinates.
Definition mesh_rulers.h:61
const int * avec_z_ovrf
Overflow bits for a axis relative Cartesian Z coordinates.
Definition mesh_rulers.h:60
const int * avec_abs_y_ovrf
Overflow bits for Cartesian Y absolute a axis coordinates.
Definition mesh_rulers.h:68
const int * avec_abs_z_ovrf
Overflow bits for Cartesian Z absolute a axis coordinates.
Definition mesh_rulers.h:69
const llint * cvec_z
Relative Cartesian Z coordinates of c axis tick marks.
Definition mesh_rulers.h:54
const int * cvec_z_ovrf
Overflow bits for c axis relative Cartesian Z coordinates.
Definition mesh_rulers.h:66
const int * cvec_x_ovrf
Overflow bits for c axis relative Cartesian X coordinates.
Definition mesh_rulers.h:64
const llint * avec_abs_x
Absolute Cartesian X coordinates of a axis tick marks.
Definition mesh_rulers.h:55
const llint * bvec_y
Relative Cartesian Y coordinates of b axis tick marks.
Definition mesh_rulers.h:50
const llint * bvec_z
Relative Cartesian Z coordinates of b axis tick marks.
Definition mesh_rulers.h:51
const int * avec_x_ovrf
Overflow bits for a axis relative Cartesian X coordinates.
Definition mesh_rulers.h:58
const llint * avec_y
Relative Cartesian Y coordinates of a axis tick marks.
Definition mesh_rulers.h:47
const int * avec_y_ovrf
Overflow bits for a axis relative Cartesian Y coordinates.
Definition mesh_rulers.h:59
const llint * cvec_x
Relative Cartesian X coordinates of c axis tick marks.
Definition mesh_rulers.h:52
const int * bvec_z_ovrf
Overflow bits for b axis relative Cartesian Z coordinates.
Definition mesh_rulers.h:63
const llint * bvec_x
Relative Cartesian X coordinates of b axis tick marks.
Definition mesh_rulers.h:49
const llint * avec_x
Relative Cartesian X coordinates of a axis tick marks.
Definition mesh_rulers.h:46
const int * bvec_y_ovrf
Overflow bits for b axis relative Cartesian Y coordinates.
Definition mesh_rulers.h:62
const int * avec_abs_x_ovrf
Overflow bits for Cartesian X absolute a axis coordinates.
Definition mesh_rulers.h:67
MeshRulerKit(const llint *avec_x_in, const llint *avec_y_in, const llint *avec_z_in, const llint *bvec_x_in, const llint *bvec_y_in, const llint *bvec_z_in, const llint *cvec_x_in, const llint *cvec_y_in, const llint *cvec_z_in, const llint *avec_abs_x_in, const llint *avec_abs_y_in, const llint *avec_abs_z_in, const int *avec_x_ovrf_in, const int *avec_y_ovrf_in, const int *avec_z_ovrf_in, const int *bvec_x_ovrf_in, const int *bvec_y_ovrf_in, const int *bvec_z_ovrf_in, const int *cvec_x_ovrf_in, const int *cvec_y_ovrf_in, const int *cvec_z_ovrf_in, const int *avec_abs_x_ovrf_in, const int *avec_abs_y_ovrf_in, const int *avec_abs_z_ovrf_in)
As with all abstracts, the constructor takes a straight list of inputs corresponding to member variab...
Definition mesh_rulers.cpp:18
const llint * avec_z
Relative Cartesian Z coordinates of a axis tick marks.
Definition mesh_rulers.h:48