2#ifndef STORMM_SURFACE_AREA_H
3#define STORMM_SURFACE_AREA_H
6#include "Constants/behavior.h"
7#include "Math/geodesic.h"
8#include "Math/series_ops.h"
9#include "Math/vector_ops.h"
10#include "Potential/scorecard.h"
11#include "Synthesis/atomgraph_synthesis.h"
12#include "Synthesis/phasespace_synthesis.h"
13#include "Synthesis/synthesis_abstracts.h"
14#include "Topology/atomgraph.h"
15#include "Topology/atomgraph_abstracts.h"
16#include "Trajectory/phasespace.h"
17#include "energy_enumerators.h"
22using constants::PrecisionModel;
23using stmath::indexingArray;
24using stmath::maxValue;
25using stmath::minValue;
26using stmath::surfaceDistribution;
27using synthesis::AtomGraphSynthesis;
28using synthesis::PhaseSpaceSynthesis;
29using synthesis::PsSynthesisWriter;
30using synthesis::SyNonbondedKit;
31using topology::AtomGraph;
32using topology::ChemicalDetailsKit;
33using topology::ImplicitSolventKit;
34using topology::NonbondedKit;
35using trajectory::PhaseSpaceWriter;
36using trajectory::PhaseSpace;
40constexpr double default_sasa_energy = 0.05;
43constexpr double default_sasa_probe_radius = 1.4;
48constexpr int default_sasa_point_count = 272;
51constexpr SasaReference default_sasa_radii = SasaReference::LENNARD_JONES_SIGMA;
55constexpr PrecisionModel default_sasa_precision = PrecisionModel::SINGLE;
59constexpr int sasa_neighbor_list_buffer_size = 8192;
93template <
typename Tcalc,
typename Tcalc2,
typename Tcalc3>
96 const std::vector<Tcalc3> &sphere_pts,
97 double probe_radius = default_sasa_probe_radius,
98 double weight = default_sasa_energy, EvaluateForce eval_frc = EvaluateForce::NO,
99 SasaReference radii_source = default_sasa_radii);
102 const std::vector<int> &molecule_idx = {},
int n_pts = default_sasa_point_count,
103 double probe_radius = default_sasa_probe_radius,
104 double weight = default_sasa_energy, EvaluateForce eval_frc = EvaluateForce::NO,
105 SasaReference radii_source = default_sasa_radii,
106 PrecisionModel prec = default_sasa_precision);
108template <
typename Tcalc,
typename Tcalc3>
109double surfaceArea(
PhaseSpaceWriter *psw,
const std::vector<bool> &sasa_mask,
110 const std::vector<Tcalc3> &sphere_pts,
const Tcalc* atomic_radii,
111 double probe_radius = default_sasa_probe_radius,
112 double weight = default_sasa_energy,
113 EvaluateForce eval_frc = EvaluateForce::NO,
114 const int* radii_idx =
nullptr);
116template <
typename Tcalc,
typename Tcalc3>
117double surfaceArea(
PhaseSpaceWriter *psw,
const std::vector<bool> &sasa_mask,
119 double probe_radius = default_sasa_probe_radius,
120 double weight = default_sasa_energy,
121 EvaluateForce eval_frc = EvaluateForce::NO);
123template <
typename Tcalc,
typename Tcalc3>
124double surfaceArea(
PhaseSpaceWriter *psw,
const std::vector<bool> &sasa_mask,
126 double probe_radius = default_sasa_probe_radius,
127 double weight = default_sasa_energy,
128 EvaluateForce eval_frc = EvaluateForce::NO);
130double surfaceArea(
PhaseSpace *ps,
const AtomGraph *ag,
const std::vector<int> &molecule_idx = {},
131 int n_pts = default_sasa_point_count,
132 double probe_radius = default_sasa_probe_radius,
133 double weight = default_sasa_energy, EvaluateForce eval_frc = EvaluateForce::NO,
134 SasaReference radii_source = default_sasa_radii,
135 PrecisionModel prec = default_sasa_precision);
137double surfaceArea(
PhaseSpace *ps,
const AtomGraph &ag,
const std::vector<int> &molecule_idx = {},
138 int n_pts = default_sasa_point_count,
139 double probe_radius = default_sasa_probe_radius,
140 double weight = default_sasa_energy, EvaluateForce eval_frc = EvaluateForce::NO,
141 SasaReference radii_source = default_sasa_radii,
142 PrecisionModel prec = default_sasa_precision);
148#include "surface_area.tpp"
Track the energy components of a collection of systems in an HPC-capable array. This object uses the ...
Definition scorecard.h:101
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
A struct to hold information relating to an Amber topology. This struct's member functions are limite...
Definition atomgraph.h:50
An object to complement a topology and hold positions, velocities, and forces of all particles in a s...
Definition phasespace.h:141
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
Information needed for Generalized Born (and perhaps other) implicit solvent methods....
Definition atomgraph_abstracts.h:352
Information needed for non-bonded real-space calculations. Templating is used as above,...
Definition atomgraph_abstracts.h:287
Collect constants and pointers to the components of a modifiable PhaseSpace object.
Definition phasespace.h:31