2#ifndef STORMM_STRUCTURE_RMSD_H
3#define STORMM_STRUCTURE_RMSD_H
6#include "Analysis/comparison_guide.h"
7#include "Constants/behavior.h"
8#include "DataTypes/common_types.h"
9#include "Math/matrix_ops.h"
10#include "Math/rounding.h"
11#include "Math/summation.h"
12#include "Synthesis/condensate.h"
13#include "Synthesis/phasespace_synthesis.h"
14#include "Synthesis/synthesis_abstracts.h"
15#include "Synthesis/synthesis_cache_map.h"
16#include "Synthesis/synthesis_enumerators.h"
17#include "Topology/atomgraph.h"
18#include "Topology/atomgraph_abstracts.h"
19#include "Trajectory/coordinateframe.h"
20#include "Trajectory/coordinate_series.h"
21#include "Trajectory/phasespace.h"
23#include "structure_enumerators.h"
28using analysis::ComparisonGuide;
29using constants::PrecisionModel;
30using data_types::isSignedIntegralScalarType;
31using stmath::EigenWork;
32using stmath::jacobiEigensolver;
33using stmath::realSymmEigensolver;
36using topology::AtomGraph;
37using topology::ChemicalDetailsKit;
38using synthesis::Condensate;
39using synthesis::CondensateReader;
40using synthesis::PhaseSpaceSynthesis;
41using synthesis::PsSynthesisReader;
42using synthesis::SyNonbondedKit;
43using synthesis::SynthesisCacheMap;
44using synthesis::SynthesisMapReader;
45using synthesis::SystemGrouping;
46using trajectory::CoordinateFrame;
47using trajectory::CoordinateFrameReader;
48using trajectory::CoordinateFrameWriter;
49using trajectory::CoordinateSeries;
50using trajectory::CoordinateSeriesReader;
51using trajectory::CoordinateSeriesWriter;
52using trajectory::PhaseSpace;
53using trajectory::PhaseSpaceReader;
54using trajectory::PhaseSpaceWriter;
75void checkCompatibility(
const ComparisonGuide &cg,
const RMSDPlan &rplan,
77 RMSDTask process, SystemGrouping organization);
80void checkCompatibility(
const ComparisonGuide &cg,
const RMSDPlan &rplan,
82 const Hybrid<T> *result, RMSDTask process, SystemGrouping organization);
136template <
typename Tcoord,
typename Tcalc>
137Tcalc rmsd(
const Tcoord* xcrd_a,
const Tcoord* ycrd_a,
const Tcoord* zcrd_a,
const Tcoord* xcrd_b,
138 const Tcoord* ycrd_b,
const Tcoord* zcrd_b,
const Tcalc* masses, RMSDMethod method,
139 int lower_limit,
int upper_limit, Tcalc inv_gpos_scale_factor = 1.0);
141double rmsd(
const double* xcrd_a,
const double* ycrd_a,
const double* zcrd_a,
const double* xcrd_b,
142 const double* ycrd_b,
const double* zcrd_b,
const double* masses, RMSDMethod method,
143 int lower_limit,
int upper_limit);
147 int upper_limit = 0);
151 int upper_limit = 0);
154 int lower_limit = 0,
int upper_limit = 0);
158 int upper_limit = 0);
162 int upper_limit = 0);
165 RMSDMethod method,
int lower_limit = 0,
int upper_limit = 0);
167template <
typename Tcoord,
typename Tcalc>
170 const int upper_limit);
172template <
typename Tcoord,
typename Tcalc>
175 const int upper_limit);
177template <
typename Tcoord,
typename Tcalc>
179 const AtomGraph &ag,
const RMSDMethod method,
const int lower_limit,
180 const int upper_limit);
194std::vector<double> rmsd(
const ComparisonGuide &cg,
const RMSDPlan &rplan,
198std::vector<double> rmsd(
const ComparisonGuide &cg,
const RMSDPlan &rplan,
216 SystemGrouping organization = SystemGrouping::TOPOLOGY);
220 Hybrid<T> *result, SystemGrouping organization = SystemGrouping::TOPOLOGY);
225 SystemGrouping organization = SystemGrouping::TOPOLOGY);
230 SystemGrouping organization = SystemGrouping::TOPOLOGY);
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
Collect instructions for one or more systems (intend to work with any coordinate object,...
Definition rmsd_plan.h:89
Condense the data format, and possibly offer a reduced representation of coordinates,...
Definition condensate.h:146
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
Store the coordinates and box information for a frame, only. This abridged struct can serve when the ...
Definition coordinateframe.h:111
Store the coordinates and box information for a series of frames, in one of several levels of precisi...
Definition coordinate_series.h:137
An object to complement a topology and hold positions, velocities, and forces of all particles in a s...
Definition phasespace.h:141
Information on atoms and residues which may be useful for applying atom masks or identifying specific...
Definition atomgraph_abstracts.h:382
Collect C-style pointers for the elements of a read-only CoordinateFrame object.
Definition coordinateframe.h:65
Collect C-style pointers for the elements of a writable CoordinateFrame object.
Definition coordinateframe.h:30
Collect C-style pointers and critical constants for a read-only CoordinateSeries object.
Definition coordinate_series.h:96
Collect C-style pointers and critical constants for a writeable CoordinateSeries object.
Definition coordinate_series.h:66
Collect constants and pointers to the components of a read-only PhaseSpace object.
Definition phasespace.h:81
Collect constants and pointers to the components of a modifiable PhaseSpace object.
Definition phasespace.h:31