# | Line 46 | Line 46 | namespace oopse { | |
---|---|---|
46 | ||
47 | namespace oopse { | |
48 | ||
49 | < | GofAngle2::GofAngle2(SimInfo* info, const std::string& filename, const std::string& sele1, |
50 | < | const std::string& sele2, int nangleBins) |
49 | > | GofAngle2::GofAngle2(SimInfo* info, const std::string& filename, const std::string& sele1, |
50 | > | const std::string& sele2, int nangleBins) |
51 | : RadialDistrFunc(info, filename, sele1, sele2), nAngleBins_(nangleBins) { | |
52 | ||
53 | < | setOutputName(getPrefix(filename) + ".gto"); |
53 | > | setOutputName(getPrefix(filename) + ".gto"); |
54 | ||
55 | < | deltaCosAngle_ = 2.0 / nAngleBins_; |
55 | > | deltaCosAngle_ = 2.0 / nAngleBins_; |
56 | ||
57 | < | histogram_.resize(nAngleBins_); |
58 | < | avgGofr_.resize(nAngleBins_); |
59 | < | for (int i = 0 ; i < nAngleBins_; ++i) { |
57 | > | histogram_.resize(nAngleBins_); |
58 | > | avgGofr_.resize(nAngleBins_); |
59 | > | for (int i = 0 ; i < nAngleBins_; ++i) { |
60 | histogram_[i].resize(nAngleBins_); | |
61 | avgGofr_[i].resize(nAngleBins_); | |
62 | < | } |
62 | > | } |
63 | ||
64 | < | } |
64 | > | } |
65 | ||
66 | ||
67 | < | void GofAngle2::preProcess() { |
67 | > | void GofAngle2::preProcess() { |
68 | ||
69 | for (int i = 0; i < avgGofr_.size(); ++i) { | |
70 | < | std::fill(avgGofr_[i].begin(), avgGofr_[i].end(), 0); |
70 | > | std::fill(avgGofr_[i].begin(), avgGofr_[i].end(), 0); |
71 | } | |
72 | < | } |
72 | > | } |
73 | ||
74 | < | void GofAngle2::initalizeHistogram() { |
74 | > | void GofAngle2::initalizeHistogram() { |
75 | npairs_ = 0; | |
76 | for (int i = 0; i < histogram_.size(); ++i) | |
77 | < | std::fill(histogram_[i].begin(), histogram_[i].end(), 0); |
78 | < | } |
77 | > | std::fill(histogram_[i].begin(), histogram_[i].end(), 0); |
78 | > | } |
79 | ||
80 | ||
81 | < | void GofAngle2::processHistogram() { |
81 | > | void GofAngle2::processHistogram() { |
82 | ||
83 | //std::for_each(avgGofr_.begin(), avgGofr_.end(), std::plus<std::vector<int>>) | |
84 | ||
85 | < | } |
85 | > | } |
86 | ||
87 | < | void GofAngle2::collectHistogram(StuntDouble* sd1, StuntDouble* sd2) { |
87 | > | void GofAngle2::collectHistogram(StuntDouble* sd1, StuntDouble* sd2) { |
88 | ||
89 | if (sd1 == sd2) { | |
90 | < | return; |
90 | > | return; |
91 | } | |
92 | ||
93 | Vector3d pos1 = sd1->getPos(); | |
# | Line 102 | Line 102 | void GofAngle2::collectHistogram(StuntDouble* sd1, Stu | |
102 | dipole2.normalize(); | |
103 | ||
104 | ||
105 | < | double cosAngle1 = dot(r12, dipole1); |
106 | < | double cosAngle2 = dot(dipole1, dipole2); |
105 | > | RealType cosAngle1 = dot(r12, dipole1); |
106 | > | RealType cosAngle2 = dot(dipole1, dipole2); |
107 | ||
108 | < | double halfBin = (nAngleBins_ - 1) * 0.5; |
108 | > | RealType halfBin = (nAngleBins_ - 1) * 0.5; |
109 | int angleBin1 = halfBin * (cosAngle1 + 1.0); | |
110 | int angleBin2 = halfBin * (cosAngle1 + 1.0); | |
111 | ||
112 | ++histogram_[angleBin1][angleBin1]; | |
113 | ++npairs_; | |
114 | < | } |
114 | > | } |
115 | ||
116 | < | void GofAngle2::writeRdf() { |
116 | > | void GofAngle2::writeRdf() { |
117 | std::ofstream rdfStream(outputFilename_.c_str()); | |
118 | if (rdfStream.is_open()) { | |
119 | < | rdfStream << "#radial distribution function\n"; |
120 | < | rdfStream << "#selection1: (" << selectionScript1_ << ")\t"; |
121 | < | rdfStream << "selection2: (" << selectionScript2_ << ")\n"; |
122 | < | rdfStream << "#nAngleBins =" << nAngleBins_ << "deltaCosAngle = " << deltaCosAngle_ << "\n"; |
123 | < | for (int i = 0; i < avgGofr_.size(); ++i) { |
124 | < | double cosAngle1 = -1.0 + (i + 0.5)*deltaCosAngle_; |
119 | > | rdfStream << "#radial distribution function\n"; |
120 | > | rdfStream << "#selection1: (" << selectionScript1_ << ")\t"; |
121 | > | rdfStream << "selection2: (" << selectionScript2_ << ")\n"; |
122 | > | rdfStream << "#nAngleBins =" << nAngleBins_ << "deltaCosAngle = " << deltaCosAngle_ << "\n"; |
123 | > | for (int i = 0; i < avgGofr_.size(); ++i) { |
124 | > | RealType cosAngle1 = -1.0 + (i + 0.5)*deltaCosAngle_; |
125 | ||
126 | < | for(int j = 0; j < avgGofr_[i].size(); ++j) { |
127 | < | double cosAngle2 = -1.0 + (j + 0.5)*deltaCosAngle_; |
128 | < | rdfStream <<avgGofr_[i][j]/nProcessed_ << "\t"; |
129 | < | } |
126 | > | for(int j = 0; j < avgGofr_[i].size(); ++j) { |
127 | > | RealType cosAngle2 = -1.0 + (j + 0.5)*deltaCosAngle_; |
128 | > | rdfStream <<avgGofr_[i][j]/nProcessed_ << "\t"; |
129 | > | } |
130 | ||
131 | < | rdfStream << "\n"; |
132 | < | } |
131 | > | rdfStream << "\n"; |
132 | > | } |
133 | ||
134 | } else { | |
135 | ||
136 | < | sprintf(painCave.errMsg, "GofAngle2: unable to open %s\n", outputFilename_.c_str()); |
137 | < | painCave.isFatal = 1; |
138 | < | simError(); |
136 | > | sprintf(painCave.errMsg, "GofAngle2: unable to open %s\n", outputFilename_.c_str()); |
137 | > | painCave.isFatal = 1; |
138 | > | simError(); |
139 | } | |
140 | ||
141 | rdfStream.close(); | |
142 | < | } |
142 | > | } |
143 | ||
144 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |