BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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
19 # include <BALL/DATATYPE/options.h>
20 #endif
21 
22 // ?????: DOCU ... documentation for constants
23 
24 namespace 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 
107  Pair6_12RDFIntegrator(const Pair6_12RDFIntegrator& integrator);
108 
116  Pair6_12RDFIntegrator(double A, double B, double k1, double k2,
117  const RadialDistributionFunction& rdf);
118 
121  virtual ~Pair6_12RDFIntegrator();
122 
124 
127 
132  const Pair6_12RDFIntegrator& operator =
133  (const Pair6_12RDFIntegrator& integrator);
134 
137  virtual void clear();
138 
140 
141 
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