-
Notifications
You must be signed in to change notification settings - Fork 4
/
area_and_volume.h
88 lines (65 loc) · 6.48 KB
/
area_and_volume.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#ifndef AREA_AND_VOLUME_H
#define AREA_AND_VOLUME_H
#include <iostream>
#include <string>
#include <vector>
#include <utility>
#include <voro++.hh>
#include "networkstorage.h"
#include "geometry.h"
#include "voronoicell.h"
#include "material.h"
//#include <voro++>
/** Returns the density of the provided ATOM_NETWORK, assuming it represents a single
* unit cell, in g/cm^3. */
double calcDensity(ATOM_NETWORK *atmnet);
/* Print the coordinates contained in the provided vectors in a manner that they can be
* displayed using ZeoVis and its VMD interface. Accessible points are colored green while
* inaccessible points are colored red.*/
void reportPoints(std::ostream &output, std::vector<Point> axsPoints, std::vector<Point> inaxsPoints);
void reportPointsVisIT(std::ostream &output, std::vector<Point> axsPoints, std::vector<Point> inaxsPoints);
/* Print the coordinates contained in the provided vectors in a manner that they can be
* displayed using ZeoVis and its VMD interface. Useful for debugging errors in the
* ASA and AV calculations. */
void reportResampledPoints(std::ostream &output, std::vector< std::pair<int, Point> > resampledInfo);
/* Adjust the sampling point to minimize its distance with the central atom. */
void adjustSamplingPoint(Point *samplingPointXYZ, Point newAtomCoordsXYZ, Point origAtomCoordsXYZ, ATOM_NETWORK *atmnet);
// Function defined in network.cc
void* performVoronoiDecomp(bool, ATOM_NETWORK *, VORONOI_NETWORK *, std::vector<VOR_CELL> &, bool, std::vector<BASIC_VCELL> &);
/* NEW functions that operate on MATERIAL class */
void NEWreportPoints(ostream &output, ATOM_NETWORK *atmnet, vector<Point> *axsPoints, vector<int> *axsPChIDs,
vector<Point> *inaxsPoints, vector<int> *inaxsPPIDs,
string type);
void NEWreportPointsValue(ostream &output, ATOM_NETWORK *atmnet, vector<Point> *, vector<int> *, vector<double>*, string);
double NEWcalcAV(MATERIAL *Mat, double r_probe, int numSamples, double low_dist_cutoff, double high_dist_cutoff);
double NEWcalcAV(MATERIAL *Mat, double r_probe, int numSamples);
void NEWcalcAVprint(MATERIAL *Mat, ostream &output, char *filename);
double NEWcalcASA(MATERIAL *Mat, double r_probe, int numSamples);
void NEWcalcASAprint(MATERIAL *Mat, ostream &output, char *filename);
/** Returns the volume accessible to a particle of the provided radius. Accessible volume is defined as any region of space
* in which the center of the particle of the provided radius can reach. The first radius is used to determine Voronoi node accessibility,
* whereas the second is used to check for overlap. Excludes inaccessible pockets if requested.*/
double calcAV(ATOM_NETWORK *atmnet, ATOM_NETWORK *orgatmnet, bool highAccuracy, double r_probe_chan, double r_probe, int numSamples, bool excludePockets, std::ostream &output, char *filename, bool visualize, bool VisITflag, bool LiverpoolFlag, bool blockingMode, double low_dist_cutoff, double high_dist_cutoff, bool ProbeOccupiableFlag);
double calcAV(ATOM_NETWORK *atmnet, ATOM_NETWORK *orgatmnet, bool highAccuracy, double r_probe, int numSamples, bool excludePockets, std::ostream &output, char *filename, bool visualize, bool VisITflag, bool LiverpoolFlag, bool blockingMode, double low_dist_cutoff, double high_dist_cutoff);
// For python interface
std::string calcAV(ATOM_NETWORK *atmnet, ATOM_NETWORK *orgatmnet, bool highAccuracy, double r_probe_chan, double r_probe, int numSamples, bool excludePockets, double low_dist_cutoff, double high_dist_cutoff);