STORMM Source Documentation
Loading...
Searching...
No Matches
surface_area.h
1// -*-c++-*-
2#ifndef STORMM_SURFACE_AREA_H
3#define STORMM_SURFACE_AREA_H
4
5#include "copyright.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"
18
19namespace stormm {
20namespace energy {
21
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;
37
40constexpr double default_sasa_energy = 0.05;
41
43constexpr double default_sasa_probe_radius = 1.4;
44
48constexpr int default_sasa_point_count = 272;
49
51constexpr SasaReference default_sasa_radii = SasaReference::LENNARD_JONES_SIGMA;
52
55constexpr PrecisionModel default_sasa_precision = PrecisionModel::SINGLE;
56
59constexpr int sasa_neighbor_list_buffer_size = 8192;
60
93template <typename Tcalc, typename Tcalc2, typename Tcalc3>
94void surfaceArea(PsSynthesisWriter *poly_psw, ScoreCard *sc,
95 const SyNonbondedKit<Tcalc, Tcalc2> &synbk, const uint* sasa_mask,
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);
100
101void surfaceArea(PhaseSpaceSynthesis *poly_ps, ScoreCard *sc, const AtomGraphSynthesis *poly_ag,
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);
107
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);
115
116template <typename Tcalc, typename Tcalc3>
117double surfaceArea(PhaseSpaceWriter *psw, const std::vector<bool> &sasa_mask,
118 const NonbondedKit<Tcalc> &nbk, const std::vector<Tcalc3> &sphere_pts,
119 double probe_radius = default_sasa_probe_radius,
120 double weight = default_sasa_energy,
121 EvaluateForce eval_frc = EvaluateForce::NO);
122
123template <typename Tcalc, typename Tcalc3>
124double surfaceArea(PhaseSpaceWriter *psw, const std::vector<bool> &sasa_mask,
125 const ImplicitSolventKit<Tcalc> &isk, const std::vector<Tcalc3> &sphere_pts,
126 double probe_radius = default_sasa_probe_radius,
127 double weight = default_sasa_energy,
128 EvaluateForce eval_frc = EvaluateForce::NO);
129
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);
136
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);
144
145} // namespace energy
146} // namespace energy
147
148#include "surface_area.tpp"
149
150#endif
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