00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_SOLVATION_PAIREXPINTERACTIONENERGYPROCESSOR_H
00008 #define BALL_SOLVATION_PAIREXPINTERACTIONENERGYPROCESSOR_H
00009
00010 #ifndef BALL_COMMON_H
00011 # include <BALL/common.h>
00012 #endif
00013
00014 #ifndef BALL_DATATYPE_OPTIONS_H
00015 # include <BALL/DATATYPE/options.h>
00016 #endif
00017
00018 #ifndef BALL_KERNEL_ATOM_H
00019 # include <BALL/KERNEL/atom.h>
00020 #endif
00021
00022 #ifndef BALL_MATHS_SURFACE_H
00023 # include <BALL/MATHS/surface.h>
00024 #endif
00025
00026 #ifndef BALL_ENERGY_ENERGYPROCESSOR_H
00027 # include <BALL/ENERGY/energyProcessor.h>
00028 #endif
00029
00030 #ifndef BALL_STRUCTURE_RDFPARAMETER_H
00031 # include <BALL/STRUCTURE/RDFParameter.h>
00032 #endif
00033
00034 #ifndef BALL_SOLVATION_PAIREXPRDFINTEGRATOR_H
00035 # include <BALL/SOLVATION/pairExpRDFIntegrator.h>
00036 #endif
00037
00038 #ifndef BALL_SOLVATION_SOLVENTDESCRIPTOR_H
00039 # include <BALL/SOLVATION/solventDescriptor.h>
00040 #endif
00041
00042
00043
00044
00045 namespace BALL
00046 {
00054 class BALL_EXPORT PairExpInteractionEnergyProcessor
00055 : public EnergyProcessor
00056 {
00057
00058 public:
00059
00060 BALL_CREATE(PairExpInteractionEnergyProcessor)
00061
00062
00063 enum SurfaceType
00064 {
00066 SURFACE__UNKNOWN = 0,
00068 SURFACE__SAS = 1,
00070 SURFACE__SES = 2,
00072 SURFACE__EXTERNAL = 3
00073 };
00074
00079 struct BALL_EXPORT Option
00080 {
00081
00087 static const char* VERBOSITY;
00088
00097 static const char* ALPHA;
00098 static const char* C1;
00099 static const char* C2;
00100
00101 static const char* CLAVERIE_FILENAME;
00102
00109 static const char* USE_RDF;
00110
00117 static const char* RDF_FILENAME;
00118
00125 static const char* SOLVENT_FILENAME;
00126
00131 static const char* SURFACE_TYPE;
00132
00137 static const char* SURFACE_FILENAME;
00138
00139 };
00140
00145 struct BALL_EXPORT Default
00146 {
00150 static const Size VERBOSITY;
00151
00157 static const double ALPHA;
00158 static const double C1;
00159 static const double C2;
00160
00161 static const char* CLAVERIE_FILENAME;
00162
00168 static const bool USE_RDF;
00169 static const char* RDF_FILENAME;
00170 static const char* SOLVENT_FILENAME;
00171
00175 static const Size SURFACE_TYPE;
00176
00180 static const char* SURFACE_FILENAME;
00181
00182 };
00183
00187
00190 PairExpInteractionEnergyProcessor();
00191
00194 PairExpInteractionEnergyProcessor(const
00195 PairExpInteractionEnergyProcessor& proc);
00196
00199 virtual ~PairExpInteractionEnergyProcessor();
00200
00202
00205
00208 const PairExpInteractionEnergyProcessor& operator =
00209 (const PairExpInteractionEnergyProcessor& proc);
00210
00213 virtual void clear();
00214
00216
00219
00222 virtual bool finish();
00223
00225
00228
00231 Options options;
00232
00234
00235 protected:
00236
00237
00238
00239 double alpha_;
00240
00241
00242
00243 double C1_;
00244
00245
00246
00247 double C2_;
00248
00249
00250
00251 SolventDescriptor solvent_;
00252
00253
00254
00255 RDFParameter rdf_parameter_;
00256
00257
00258
00259
00260 private:
00261
00262 void computeClaverieParameters(Atom::Type solvent_type,
00263 Atom::Type solute_type, std::pair<float, float>& parameters);
00264 void getExternalSurface_(
00265 std::vector< std::pair<Vector3, Surface> >& surface_map,
00266 const char* surface_file);
00267
00268 };
00269
00270 }
00271
00272 #endif // BALL_SOLVATION_PAIREXPINTERACTIONENERGYPROCESSOR_H