00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_SOLVATION_PAIREXPRDFINTEGRATOR_H
00008 #define BALL_SOLVATION_PAIREXPRDFINTEGRATOR_H
00009
00010 #ifndef BALL_COMMON_H
00011 # include <BALL/common.h>
00012 #endif
00013
00014 #ifndef BALL_STRUCTURE_RDFINTEGRATOR_H
00015 # include <BALL/STRUCTURE/RDFIntegrator.h>
00016 #endif
00017
00018 #ifndef BALL_MATHS_PIECEWISEFUNCTION_H
00019 # include <BALL/STRUCTURE/piecewiseFunction.h>
00020 #endif
00021
00022 #ifndef BALL_DATATYPE_OPTIONS_H
00023 # include <BALL/DATATYPE/options.h>
00024 #endif
00025
00026 namespace BALL
00027 {
00037 class BALL_EXPORT PairExpRDFIntegrator
00038 : public RDFIntegrator
00039 {
00040
00041 public:
00042
00043 BALL_CREATE(PairExpRDFIntegrator)
00044
00045
00049 struct BALL_EXPORT Option
00050 {
00056 static const char* VERBOSITY;
00057
00062 static const char* SAMPLES;
00063 };
00064
00065 struct BALL_EXPORT Default
00066 {
00070 static const int VERBOSITY;
00074 static const int SAMPLES;
00075 };
00076
00077
00081
00084 PairExpRDFIntegrator();
00085
00089 PairExpRDFIntegrator(const PairExpRDFIntegrator& integrator);
00090
00100 PairExpRDFIntegrator(double alpha, double C1, double C2, double R_ij_o,
00101 double k1, double k2, const RadialDistributionFunction& rdf);
00102
00105 virtual ~PairExpRDFIntegrator();
00106
00108
00111
00116 const PairExpRDFIntegrator& operator =
00117 (const PairExpRDFIntegrator& integrator) ;
00118
00121 virtual void clear();
00122
00124
00127
00137 void setConstants(double alpha, double C1, double C2, double R_ij_o,
00138 double k1, double k2);
00139
00149 void getConstants(double& alpha, double& C1, double& C2, double& R_ij_o,
00150 double& k1, double& k2) ;
00151
00156 double integrateToInf(double from) const;
00157
00168 double integrateToInf(double from, double alpha, double C1, double C2,
00169 double R_ij_o, double k1, double k2);
00170
00176 double integrate(double from, double to) const ;
00177
00189 double integrate(double from, double to, double alpha, double C1,
00190 double C2, double R_ij_o, double k1, double k2) ;
00191
00197 virtual double operator () (double x) const;
00198
00200
00203
00209 bool operator == (const PairExpRDFIntegrator& integrator) const;
00210
00212
00215 Options options;
00216
00220
00225 virtual void dump (std::ostream& s = std::cout, Size depth = 0) const;
00226
00228
00229 protected:
00230
00231
00232
00233 double alpha_;
00234
00235
00236
00237 double C1_;
00238
00239
00240
00241 double C2_;
00242
00243
00244
00245 double R_ij_o_;
00246
00247
00248
00249 double k1_;
00250
00251
00252
00253 double k2_;
00254
00255
00256 private:
00257
00258
00259
00260
00261
00262 double numericallyIntegrateInterval(Interval interval) const;
00263
00264
00265
00266
00267
00268
00269 double project(double x) const;
00270
00271
00272
00273
00274
00275 double unproject(double x) const;
00276
00277 };
00278
00279 }
00280
00281 #endif // BALL_SOLVATION_PAIREXPRDFINTEGRATOR_H