STORMM Source Documentation
Loading...
Searching...
No Matches
stormm::review::BackgroundMesh< T > Class Template Reference

A workspace for constructing a pure potential mesh based on the frozen atoms of a large molecule. If the large molecule has nonrigid components, they must be excluded from contributing to the grid. In addition, any atoms up to 1:4 (connected by three bonds or less) must also be excluded from the grid-based potential. Computations on these atoms will not be accurate off the grid, but since they are frozen the consequences are mitigated. More...

#include <background_mesh.h>

Public Member Functions

const MeshParametersgetDimensions () const
 Get an object describing the mesh dimensions.
 
const AtomGraphgetTopologyPointer () const
 Get a const pointer to the topology responsible for creating this mesh.
 
const CoordinateFramegetCoordinatePointer () const
 Get a const pointer to the coordinates responsible for creating this mesh.
 
template<typename Tcoord>
const CoordinateSeries< Tcoord > * getEnsemblePointer () const
 Get a const reference to the array of structures (each stored as a CoordinateFrame) reponsible for creating this mesh.
 
size_t getEnsembleTypeCode () const
 Get the codified data type of the ensemble.
 
GridDetail getMeshKind () const
 Get the type of mesh.
 
NonbondedPotential getNonbondedPotential () const
 Get the non-bonded potential expressed on the mesh. This will return an error if the mesh is not associated with a non-bonded potential.
 
double getProbeRadius () const
 Get the probe radius. Valid for all types of meshes.
 
double getWellDepth () const
 Get the non-bonded probe well depth. This is valid only for non-bonded fields, in particular those associated with a van-der Waals potential.
 
double getClashDistance () const
 Get the absolute distance at which softcore electrostatic interactions take over. This is provided for utility and accesses the nested nonbonded_model MeshForceField class member variable.
 
double getClashRatio () const
 Get the ratio of the van-der Waals (Lennard-Jones) sigma parameter for interacting pairs of particles at which softcore van-der Waals interactions take over. This is provided for utility and accesses the nested nonbonded_model MeshForceField class member variable.
 
double getOcclusionPenalty () const
 Get the penalty associated with a collision on an occlusion mesh.
 
VdwCombiningRule getCombiningRule () const
 Get the mixing protocol used for van-der Waals (as expressed by the Lennard-Jones model) interactions.
 
PrecisionModel getBuildPrecision () const
 Get the precisionmodel under which the mesh was calculated.
 
double getCoefficientScalingFactor () const
 Get the scaling factor for mesh coefficients in fixed-precision representations.
 
int getCoefficientScalingBits () const
 Get the number of bits after the decimal in fixed-precision mesh coefficient representations.
 
const MeshFFKit< T > getNonbondedKit (HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get the abstract of the mesh in the precision of the mesh's coefficient data.
 
const MeshFFKit< double > getReferenceNonbondedKit (HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get the abstract of the mesh in double precision.
 
const MeshFFKit< void > templateFreeNonbondedKit (HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get a template-free form of the of the mesh nonbonded abstract in the mesh coefficient data type, useful for passing between the C++- and HPC-compiled code objects.
 
void setProbeRadius (double probe_radius_in)
 Set the probe radius, meaning either the Lennard-Jones potential sigma radius or the clash probe radius, depending on the mesh type. This includes a validity check.
 
void setWellDepth (double well_depth_in)
 Set the Lennard-Jones well depth for the probe that will generate the potential. This includes a validity check.
 
void setOcclusionPenalty (double occlusion_penalty_in)
 Set the penalty associated with striking occupied volume on an occlusion mesh. This is intended to be modified afeter making the mesh, if at all, as the actual value has no bearing on the way the bitmask is constructed.
 
void validateCombiningRule (VdwCombiningRule mixing_protocol_in, const std::vector< double > &probe_sigma, const std::vector< double > &probe_epsilon)
 Check the combining rule that will be used to make the probe interact with the receptor on any mesh (with the exception of an electrostatic field). With geometric combining rules, it is possible to tailor a single mesh for all particles that might interact with the receptor. However, with Lorentz-Berthelot rules or any case of non-conformant pair rules, new grids are required for a rigorous description of each particle type that might interact with the mesh potential.
 
void setCoefficientScalingBits (int scaling_bits_in)
 Set the number of bits after the decimal to be used in fixed-precision representations of coordinates.
 
void computeField (const MeshKlManager &launcher=MeshKlManager(), PrecisionModel prec=PrecisionModel::SINGLE, HybridTargetLevel availability=HybridTargetLevel::HOST, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={})
 Compute the appropriate field for the mesh. This is called automatically by the constructor if enough information is provided.
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const MeshParameters &measurements_in=MeshParameters(), const PrecisionModel build_precision_in=PrecisionModel::SINGLE)
 The constructor takes all dimension parameters plus an indication of what type of potential, the molecular system, and what mask of atoms is to be mapped. Variants include different ways to define the limits of the mesh. If a GPU is available, it will be used to compute the mesh.
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const MeshParameters &measurements_in=MeshParameters(), const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const MeshParameters &measurements_in=MeshParameters(), const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, double buffer, double spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, double buffer, double spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, double buffer, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, double buffer, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, const std::vector< double > &mesh_bounds, double spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, const std::vector< double > &mesh_bounds, double spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, const std::vector< double > &mesh_bounds, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, const std::vector< double > &mesh_bounds, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, double buffer, double spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, double buffer, double spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, double buffer, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, double buffer, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, const std::vector< double > &mesh_bounds, double spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, const std::vector< double > &mesh_bounds, double spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, const std::vector< double > &mesh_bounds, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, const std::vector< double > &mesh_bounds, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, VdwCombiningRule mixing_protocol_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, double buffer, double spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, double buffer, double spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, VdwCombiningRule mixing_protocol_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, double buffer, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, double buffer, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, VdwCombiningRule mixing_protocol_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, const std::vector< double > &mesh_bounds, double spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, const std::vector< double > &mesh_bounds, double spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, VdwCombiningRule mixing_protocol_in, const AtomGraph *ag_in, const CoordinateFrame *cf_in, const std::vector< double > &mesh_bounds, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateFrame &cf_in, const std::vector< double > &mesh_bounds, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const MeshParameters &measurements_in=MeshParameters(), int averaging_order=default_mesh_density_averaging_order, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, double buffer, double spacing, int scale_bits_in=default_globalpos_scale_bits, int averaging_order=default_mesh_density_averaging_order, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, double buffer, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, int averaging_order=default_mesh_density_averaging_order, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, const std::vector< double > &mesh_bounds, double spacing, int scale_bits_in=default_globalpos_scale_bits, int averaging_order=default_mesh_density_averaging_order, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, double probe_radius_in, double well_depth_in, VdwCombiningRule mixing_protocol_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, const std::vector< double > &mesh_bounds, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, int averaging_order=default_mesh_density_averaging_order, const std::vector< double > &probe_sigma={}, const std::vector< double > &probe_epsilon={}, double clash_distance_in=default_mesh_elec_damping_range, double clash_ratio_in=default_mesh_vdw_damping_ratio, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, double buffer, double spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, double buffer, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, const std::vector< double > &mesh_bounds, double spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, NonbondedPotential field_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, const std::vector< double > &mesh_bounds, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, double clash_distance_in=default_mesh_elec_damping_range, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, double buffer, double spacing, int scale_bits_in=default_globalpos_scale_bits, int averaging_order=default_mesh_density_averaging_order, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, double buffer, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, int averaging_order=default_mesh_density_averaging_order, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, const std::vector< double > &mesh_bounds, double spacing, int scale_bits_in=default_globalpos_scale_bits, int averaging_order=default_mesh_density_averaging_order, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
template<typename Tcoord>
 BackgroundMesh (GridDetail kind_in, double probe_radius_in, const AtomGraph &ag_in, const CoordinateSeries< Tcoord > &cs_in, const std::vector< double > &mesh_bounds, const std::vector< double > &spacing, int scale_bits_in=default_globalpos_scale_bits, int averaging_order=default_mesh_density_averaging_order, const std::vector< double > &probe_sigma={}, PrecisionModel prec=PrecisionModel::SINGLE, const MeshKlManager &launcher=MeshKlManager(), HybridTargetLevel availability=HybridTargetLevel::HOST)
 
 BackgroundMesh (const BackgroundMesh< T > &original)=default
 Copy and move constructors as well as assignment operators can be set to their defaults because the object is composed of others, which may contain POINTER-kind Hybrid objects but have their own copy and move assignment operators.
 
 BackgroundMesh (BackgroundMesh< T > &&original)=default
 
BackgroundMeshoperator= (const BackgroundMesh< T > &original)=default
 
BackgroundMeshoperator= (BackgroundMesh< T > &&original)=default
 
const MeshFoundationgetMolecularBasis () const
 Get the collection of molecular details underlying the mesh, including the topology and associated coordinates, plus any neighbor list.
 
MeshFoundationgetMolecularBasis ()
 
const BackgroundMeshReader< T > data (HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get an abstract of the mesh.
 
BackgroundMeshWriter< T > data (HybridTargetLevel tier=HybridTargetLevel::HOST)
 
const BackgroundMeshReader< void > templateFreeData (HybridTargetLevel tier=HybridTargetLevel::HOST) const
 Get an abstract of the mesh with any templating removed.
 
BackgroundMeshWriter< void > templateFreeData (HybridTargetLevel tier=HybridTargetLevel::HOST)
 
void setMeshParameters (const AtomGraph *ag_in, const CoordinateFrame *cf_in, double padding, double spacing, int scale_bits_in=-100)
 Set the dimensions of the mesh. Variants of this member function that do not include a coordinate pointer or topology may assume that one has already been set. Variants that do accept a coordinate pointer will set that as the mesh's coordinate set.
 
void setMeshParameters (const AtomGraph *ag_in, const CoordinateFrame *cf_in, double padding, const std::vector< double > &spacing, int scale_bits_in=-100)
 
void setMeshParameters (double padding, double spacing, int scale_bits_in=-100)
 
void setMeshParameters (double padding, const std::vector< double > &spacing, int scale_bits_in=-100)
 
void setMeshParameters (const std::vector< double > &mesh_bounds, double spacing, int scale_bits_in=-100)
 
void setMeshParameters (const std::vector< double > &mesh_bounds, const std::vector< double > &spacing, int scale_bits_in=-100)
 

Detailed Description

template<typename T>
class stormm::review::BackgroundMesh< T >

A workspace for constructing a pure potential mesh based on the frozen atoms of a large molecule. If the large molecule has nonrigid components, they must be excluded from contributing to the grid. In addition, any atoms up to 1:4 (connected by three bonds or less) must also be excluded from the grid-based potential. Computations on these atoms will not be accurate off the grid, but since they are frozen the consequences are mitigated.

Constructor & Destructor Documentation

◆ BackgroundMesh() [1/2]

template<typename T>
stormm::structure::BackgroundMesh< T >::BackgroundMesh ( GridDetail kind_in,
NonbondedPotential field_in,
const MeshParameters & measurements_in = MeshParameters(),
const PrecisionModel build_precision_in = PrecisionModel::SINGLE )

The constructor takes all dimension parameters plus an indication of what type of potential, the molecular system, and what mask of atoms is to be mapped. Variants include different ways to define the limits of the mesh. If a GPU is available, it will be used to compute the mesh.

Overloaded:

  • Various combinations of parameters specific to relevant mesh kinds
  • Templated constructors for including a coordinate series rather than a single structure in occlusion field and specific nonbonded field meshes
Parameters
agSystem topology (markings in its mobile_atoms array will be used to determine which atoms to map)
cfCartesian coordinates of all particles
bufferBreadth around the molecule drawing an orthhombic region in which to map the mesh
mesh_boundsBoundaries of the mesh, a six-element vector describing the lower and upper Cartesian X, Y, and Z limits of an orthorhombic region in which to define a rectilinear mesh.
spacingGrid spacings for the mesh cells. Provide either a single number or three dimensions for the Cartesian X, Y, and Z widths of rectilinear elements.
measurements_inA full description of the mesh parameters. This provides a means to define non-orthorhombic meshes.
clash_distance_inThe absolute distance at which electrostatic interactions will be deemed in conflict and a softcore potential will take over
clash_ratio_inThe ratio of the pairwise van-der Waals sigma parameter at which a van-der Waals interaction will be declared in conflict and the softcore potential form will take over
scale_bitsNumber of bits after the decimal when taking coordinates in units of Angstroms into the fixed-precision format of the mesh framework
averaging_orderThe width of the discrete point patch from an occlusion mesh measured for a single frame that will be averaged to compute a contribution to a continuous field density Angstroms into the fixed-precision format of the mesh framework
launcherManager for launching mesh-based kernels (dispenses launch grid parameters)
precPrecision model to use in GPU-based mesh construction computations
availabilityIndicate whether the particle coordinate data on the CPU or GPU should be trusted

◆ BackgroundMesh() [2/2]

template<typename T>
stormm::structure::BackgroundMesh< T >::BackgroundMesh ( const BackgroundMesh< T > & original)
default

Copy and move constructors as well as assignment operators can be set to their defaults because the object is composed of others, which may contain POINTER-kind Hybrid objects but have their own copy and move assignment operators.

Parameters
originalThe original object to copy or move
otherAssignments are made based on this pre-existing object.

Member Function Documentation

◆ computeField()

template<typename T>
void stormm::structure::BackgroundMesh< T >::computeField ( const MeshKlManager & launcher = MeshKlManager(),
PrecisionModel prec = PrecisionModel::SINGLE,
HybridTargetLevel availability = HybridTargetLevel::HOST,
const std::vector< double > & probe_sigma = {},
const std::vector< double > & probe_epsilon = {} )

Compute the appropriate field for the mesh. This is called automatically by the constructor if enough information is provided.

Parameters
launcherManager for mesh kernels, dispenses launch parameters
precPrecision model to use in GPU-based mesh construction computations
availabilityLevel at which the data is expected to be available

◆ data()

template<typename T>
const BackgroundMeshReader< T > stormm::structure::BackgroundMesh< T >::data ( HybridTargetLevel tier = HybridTargetLevel::HOST) const

Get an abstract of the mesh.

Overloaded:

  • Get the reader for a const object
  • Get the writer for a mutable object
Parameters
tierObtain the data at the level of the CPU host or GPU device

◆ getMolecularBasis()

template<typename T>
const MeshFoundation & stormm::structure::BackgroundMesh< T >::getMolecularBasis ( ) const

Get the collection of molecular details underlying the mesh, including the topology and associated coordinates, plus any neighbor list.

Overloaded:

  • Return a const reference for a const object
  • Return a mutable pointer for a non-const object

◆ getNonbondedKit()

template<typename T>
const MeshFFKit< T > stormm::structure::BackgroundMesh< T >::getNonbondedKit ( HybridTargetLevel tier = HybridTargetLevel::HOST) const

Get the abstract of the mesh in the precision of the mesh's coefficient data.

Parameters
tierObtain the data at the level of the CPU host or GPU device

◆ getReferenceNonbondedKit()

template<typename T>
const MeshFFKit< double > stormm::structure::BackgroundMesh< T >::getReferenceNonbondedKit ( HybridTargetLevel tier = HybridTargetLevel::HOST) const

Get the abstract of the mesh in double precision.

Parameters
tierObtain the data at the level of the CPU host or GPU device

◆ setCoefficientScalingBits()

template<typename T>
void stormm::structure::BackgroundMesh< T >::setCoefficientScalingBits ( int scaling_bits_in)

Set the number of bits after the decimal to be used in fixed-precision representations of coordinates.

Parameters
scaling_bits_inThe desired bit count

◆ setMeshParameters()

template<typename T>
void stormm::structure::BackgroundMesh< T >::setMeshParameters ( const AtomGraph * ag_in,
const CoordinateFrame * cf_in,
double padding,
double spacing,
int scale_bits_in = -100 )

Set the dimensions of the mesh. Variants of this member function that do not include a coordinate pointer or topology may assume that one has already been set. Variants that do accept a coordinate pointer will set that as the mesh's coordinate set.

Overloaded:

  • Take coordinate and topology pointers with a single parameter to define the mesh limits.
  • Take a single parameter to define the mesh limits around a set of coordinates defined by a particular topology, and assume that the mesh already has these things.
  • Take the minimum and maximum Cartesian X, Y, and Z limits of a rectilinear mesh (this will not require a system to implement)
  • Take a single parameter to define isotropic mesh elements
  • Take three or nine parameters to define anisotropic rectilinear or triclinic mesh elements
  • Indicate the scaling bits to be used in fixed-precision arithmetic when determining positions on the mesh, or leave that parameter unchanged
Parameters
ag_inNew topology to build the mesh around (this will be incorporated into the object)
cf_inNew coordinate set to build the mesh around (this will be incorporated into the object)
paddingRegion around the molecule of interest to spread the mesh
mesh_boundsMinimum and maximum Cartesian limits of the mesh
spacingWidth (and length, and height, or bounding vectors) of mesh elements
scale_bits_inThe number of bits after the decimal to use in fixed-precision computations of particle positions on the grid. The default value of -100 is nonsensical and will be interpreted as "leave the current setting as it is." Limiting the number of function overloads in this way is a step towards controlling code bloat due to this large, templated class.

◆ setOcclusionPenalty()

template<typename T>
void stormm::structure::BackgroundMesh< T >::setOcclusionPenalty ( double occlusion_penalty_in)

Set the penalty associated with striking occupied volume on an occlusion mesh. This is intended to be modified afeter making the mesh, if at all, as the actual value has no bearing on the way the bitmask is constructed.

Parameters
occlusion_penalty_inThe occlusion penalty to set

◆ setProbeRadius()

template<typename T>
void stormm::structure::BackgroundMesh< T >::setProbeRadius ( double probe_radius_in)

Set the probe radius, meaning either the Lennard-Jones potential sigma radius or the clash probe radius, depending on the mesh type. This includes a validity check.

Parameters
probe_radius_inThe probe radius to set

◆ setWellDepth()

template<typename T>
void stormm::structure::BackgroundMesh< T >::setWellDepth ( double well_depth_in)

Set the Lennard-Jones well depth for the probe that will generate the potential. This includes a validity check.

Parameters
well_depth_inThe well depth to set

◆ templateFreeData()

template<typename T>
const BackgroundMeshReader< void > stormm::structure::BackgroundMesh< T >::templateFreeData ( HybridTargetLevel tier = HybridTargetLevel::HOST) const

Get an abstract of the mesh with any templating removed.

Overloaded:

  • Get the reader for a const object
  • Get the writer for a mutable object
Parameters
tierObtain the data at the level of the CPU host or GPU device

◆ templateFreeNonbondedKit()

template<typename T>
const MeshFFKit< void > stormm::structure::BackgroundMesh< T >::templateFreeNonbondedKit ( HybridTargetLevel tier = HybridTargetLevel::HOST) const

Get a template-free form of the of the mesh nonbonded abstract in the mesh coefficient data type, useful for passing between the C++- and HPC-compiled code objects.

Parameters
tierObtain the data at the level of the CPU host or GPU device

◆ validateCombiningRule()

template<typename T>
void stormm::structure::BackgroundMesh< T >::validateCombiningRule ( VdwCombiningRule mixing_protocol_in,
const std::vector< double > & probe_sigma,
const std::vector< double > & probe_epsilon )

Check the combining rule that will be used to make the probe interact with the receptor on any mesh (with the exception of an electrostatic field). With geometric combining rules, it is possible to tailor a single mesh for all particles that might interact with the receptor. However, with Lorentz-Berthelot rules or any case of non-conformant pair rules, new grids are required for a rigorous description of each particle type that might interact with the mesh potential.

Parameters
mixing_protocol_inThe method to use
probe_sigmaProbe pairwise sigma parameters with each Lennard-Jones type in the topology (the topology is assumed to be set by the time this function is called). For NBFIX combining rules, this array must have entries for each Lennard-Jones type. For other combining rules, this array should have no contents.
probe_epsilonProbe pairwise epsilon parameters (see probe_sigma for stipulations about this array)

The documentation for this class was generated from the following file: