A tabulated non-bonded potential, with or without exclusions, to be used in the context of particle-particle, particle-mesh calculations. The key is to create two tables, one for the non-excluded form of the interaction and the other for the excluded form. The entries for each table will then be concatenated, such that all non-excluded interactions are contiguous and then all exclude interactions are contiguous. The offset for accessing an excluded interaction based on an index calculated from a particle-particle distance is stored alongside the tabulated splines in the abstract.
More...
|
NonbondedTheme | getTheme () const |
| Get the non-bonded potential described by an object of this class.
|
|
double | getCutoff () const |
| Get the cutoff on particle-particle interactions.
|
|
double | getMaximumRange () const |
| Get the maximum range of the spline.
|
|
double | getIndexingOffset () const |
| Get the indexing argument offset, consistent across all tables.
|
|
double | getDirectSumTolerance () const |
| Get the direct sum tolerance.
|
|
int | getBitStride () const |
| Get the number of bits of the mantissa used for table indexing.
|
|
double | getEwaldCoefficient () const |
| Get the Ewald coefficient used to perform the switching between short- and long-ranged potentials.
|
|
double | getGaussianWidth () const |
| Get the Gaussian RMS sigma parameter (one half the inverse of the Ewald coefficient) used to perform the switching between short- and long-ranged potentials.
|
|
int | getTableIndex (double arg, PrecisionModel prec=PrecisionModel::SINGLE) const |
| Get the spline index that would be accessed in order to evaluate a given argument.
|
|
int | getTableIndexByRealArg (double arg, PrecisionModel prec=PrecisionModel::SINGLE) const |
| Get the spline index that would be accessed in order to evaluate a given argument.
|
|
double | evaluate (double arg, LogSplineForm kind, PrecisionModel prec=PrecisionModel::SINGLE, bool use_elemental_tables=false) const |
| Evaluate the spline table at a given inter-particle distance expressed in the manner used for the class object's table indexing. For example, if the object indexes its tables by the squared value of the displacement, enter 49.0 A^2 in order to get the force, energy, or excluded form thereof for two particles separated by a distance of 7.0 A.
|
|
double | evaluateByRealArg (double arg, LogSplineForm kind, PrecisionModel prec=PrecisionModel::SINGLE, bool use_elemental_tables=false) const |
| Evaluate the spline table at a given inter-particle distance expressed as the absolute value of the displacement between two particles. Descriptions of input parameters otherwise follow from evaluate(), above.
|
|
const PPIKit< double, double4 > | dpData (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the double-precision abstract for use of the splines in a C programming style.
|
|
const PPIKit< float, float4 > | spData (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the single-precision abstract for use of the splines in a C programming style.
|
|
const PPIeKit< double > | dpeData (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the double-precision abstract for use of the splines in a C programming style, with all spline tuples broken into their individual components. This abstract may be more suitable for kernels where register pressure constrains performance.
|
|
const PPIeKit< float > | speData (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the single-precision abstract for use of the splines in a C programming style, with all spline tuples broken into their individual components. This abstract may be more suitable for kernels where register pressure constrains performance.
|
|
|
| PPITable (NonbondedTheme theme_in=NonbondedTheme::ELECTROSTATIC, BasisFunctions basis_set_in=BasisFunctions::POLYNOMIAL, TableIndexing indexing_method_in=TableIndexing::SQUARED_ARG, double cutoff_in=default_pme_cutoff, double argument_offset_in=0.0, double dsum_tol_in=default_dsum_tol, int mantissa_bits_in=5, double coulomb_in=amber_ancient_bioq, double min_range_in=0.015625) |
| The constuctor can accept all of the arguments that might be useful for making a LosScaleSpline, or a LogScaleSpline itself. Tables for both the otential and the derivative will be computed.
|
|
template<typename T4> |
| PPITable (const LogScaleSpline< T4 > &spl_a, const LogScaleSpline< T4 > &spl_b, const LogScaleSpline< T4 > &spl_c, const LogScaleSpline< T4 > &spl_d, double cutoff_in=default_pme_cutoff) |
|
template<typename T4> |
| PPITable (const LogScaleSpline< T4 > &spl_a, const LogScaleSpline< T4 > &spl_b, const LogScaleSpline< T4 > &spl_c) |
|
template<typename T4> |
| PPITable (const LogScaleSpline< T4 > &spl_a, const LogScaleSpline< T4 > &spl_b) |
|
template<typename T4> |
| PPITable (const LogScaleSpline< T4 > &spl_a) |
|
|
| PPITable (const PPITable &original) |
| The presence of POINTER-kind Hybrid objects implies pointer repairs that require the copy and move constructors as well as assignment operators to be spelled out.
|
|
| PPITable (PPITable &&original) |
|
PPITable & | operator= (const PPITable &original) |
|
PPITable & | operator= (PPITable &&original) |
|
A tabulated non-bonded potential, with or without exclusions, to be used in the context of particle-particle, particle-mesh calculations. The key is to create two tables, one for the non-excluded form of the interaction and the other for the excluded form. The entries for each table will then be concatenated, such that all non-excluded interactions are contiguous and then all exclude interactions are contiguous. The offset for accessing an excluded interaction based on an index calculated from a particle-particle distance is stored alongside the tabulated splines in the abstract.