BALL 1.5.0
pair6_12RDFIntegrator.h
Go to the documentation of this file.
1// -*- Mode: C++; tab-width: 2; -*-
2// vi: set ts=2:
3//
4// $Id: pair6_12RDFIntegrator.h,v 1.24 2005/12/23 17:01:59 amoll Exp $
5//
6
7#ifndef BALL_SOLVATION_PAIR6_12RDFINTEGRATOR_H
8#define BALL_SOLVATION_PAIR6_12RDFINTEGRATOR_H
9
10#ifndef BALL_STRUCTURE_RDFINTEGRATOR_H
12#endif
13
14#ifndef BALL_MATHS_PIECEWISEFUNCTION_H
16#endif
17
18#ifndef BALL_DATATYPE_OPTIONS_H
20#endif
21
22// ?????: DOCU ... documentation for constants
23
24namespace BALL
25{
35 : public RDFIntegrator
36 {
37 public:
38
40
41
46 {
52 static const char* METHOD;
53
59 static const char* SAMPLES;
60
66 static const char* VERBOSITY;
67 };
68
70 {
74 static const Size VERBOSITY;
75
79 static const Size METHOD;
80
84 static const Size SAMPLES;
85 };
86
90 {
91 METHOD__UNKNOWN = 0,
92 METHOD__ANALYTICAL = 1,
93 METHOD__TRAPEZIUM = 2
94 };
95
99
103
108
116 Pair6_12RDFIntegrator(double A, double B, double k1, double k2,
117 const RadialDistributionFunction& rdf);
118
122
124
127
132 const Pair6_12RDFIntegrator& operator =
133 (const Pair6_12RDFIntegrator& integrator);
134
137 virtual void clear();
138
140
142
149 void setConstants(double A, double B, double k1, double k2);
150
157 void getConstants(double& A, double& B, double& k1, double& k2);
158
163 double integrateToInf(double from) const;
164
173 double integrateToInf(double from, double A, double B, double k1,
174 double k2);
175
182 double integrate(double from, double to) const;
183
193 double integrate(double from, double to, double A, double B, double k1,
194 double k2);
195
201 virtual double operator () (double x) const;
202
204
207
213 bool operator == (const Pair6_12RDFIntegrator& integrator) const;
214
216
220
221
225
230 virtual void dump (std::ostream& s = std::cout, Size depth = 0) const;
231
233
234 protected:
235
236 /*_ Repulsion constant
237 */
238 double A_;
239
240 /*_ Dispersion constant
241 */
242 double B_;
243
244 /*_ Geometry constant
245 */
246 double k1_;
247
248 /*_ Geometry constant
249 */
250 double k2_;
251
252
253 private:
254
255 /*_ Integrate an interval analytically. This method does the actual work.
256 @param interval the interval to be integrated
257 @param coeffs the coefficients for this interval
258 @param x0 the value to be subtracted from x
259 @return the value of the integral
260 */
261 double analyticallyIntegrateInterval(const Interval& interval,
262 const Coefficients& coeffs, float x0) const;
263
264 /*_ Integrate an interval numerically.
265 @param interval the interval to be integrated
266 @return the value of the integral
267 */
268 double numericallyIntegrateInterval(const Interval& interval) const;
269
270 /*_ Project a number from the integration beam to the projection beam
271 of an atom center for the rdf thingy.
272 @param x the value to be projected
273 @return the projection of <b> x </b>
274 */
275 double project(double x) const;
276
277 /*_ Do the reverse of project().
278 @param x the valut to be reversly projected
279 @return the projection of <b> x </b>
280 */
281 double unproject(double x) const;
282 };
283
284} // namespace BALL
285
286#endif // BALL_SOLVATION_PAIR6_12RDFINTEGRATOR_H
#define BALL_CREATE(name)
Definition: create.h:62
std::vector< double > Coefficients
Definition: constants.h:13
std::pair< double, double > Interval
BALL_EXPORT bool operator==(const String &s1, const String &s2)
double integrate(double from, double to) const
double integrateToInf(double from, double A, double B, double k1, double k2)
Pair6_12RDFIntegrator(double A, double B, double k1, double k2, const RadialDistributionFunction &rdf)
virtual void dump(std::ostream &s=std::cout, Size depth=0) const
void setConstants(double A, double B, double k1, double k2)
void getConstants(double &A, double &B, double &k1, double &k2)
Pair6_12RDFIntegrator(const Pair6_12RDFIntegrator &integrator)
double integrate(double from, double to, double A, double B, double k1, double k2)
double integrateToInf(double from) const
#define BALL_EXPORT
Definition: COMMON/global.h:50