| 47 |
|
#include "UseTheForce/ForceField.hpp" |
| 48 |
|
#include "math/SquareMatrix3.hpp" |
| 49 |
|
#include "math/CubicSpline.hpp" |
| 50 |
+ |
#include "brains/SimInfo.hpp" |
| 51 |
|
|
| 52 |
|
namespace OpenMD { |
| 53 |
|
|
| 63 |
|
}; |
| 64 |
|
|
| 65 |
|
enum ElectrostaticSummationMethod{ |
| 66 |
< |
NONE, |
| 67 |
< |
SWITCHING_FUNCTION, |
| 68 |
< |
SHIFTED_POTENTIAL, |
| 69 |
< |
SHIFTED_FORCE, |
| 70 |
< |
REACTION_FIELD, |
| 71 |
< |
EWALD_FULL, /**< Ewald methods aren't supported yet */ |
| 72 |
< |
EWALD_PME, /**< Ewald methods aren't supported yet */ |
| 73 |
< |
EWALD_SPME /**< Ewald methods aren't supported yet */ |
| 66 |
> |
esm_HARD, |
| 67 |
> |
esm_SWITCHING_FUNCTION, |
| 68 |
> |
esm_SHIFTED_POTENTIAL, |
| 69 |
> |
esm_SHIFTED_FORCE, |
| 70 |
> |
esm_REACTION_FIELD, |
| 71 |
> |
esm_EWALD_FULL, /**< Ewald methods aren't supported yet */ |
| 72 |
> |
esm_EWALD_PME, /**< Ewald methods aren't supported yet */ |
| 73 |
> |
esm_EWALD_SPME /**< Ewald methods aren't supported yet */ |
| 74 |
|
}; |
| 75 |
|
|
| 76 |
|
enum ElectrostaticScreeningMethod{ |
| 83 |
|
public: |
| 84 |
|
Electrostatic(); |
| 85 |
|
void setForceField(ForceField *ff) {forceField_ = ff;}; |
| 86 |
+ |
void setSimInfo(SimInfo* info) {info_ = info;}; |
| 87 |
|
void addType(AtomType* atomType); |
| 88 |
< |
void calcForce(InteractionData idat); |
| 89 |
< |
void calcSkipCorrection(SkipCorrectionData skdat); |
| 88 |
< |
void calcSelfCorrection(SelfCorrectionData scdat); |
| 88 |
> |
virtual void calcForce(InteractionData &idat); |
| 89 |
> |
virtual void calcSelfCorrection(SelfData &sdat); |
| 90 |
|
virtual string getName() {return name_;} |
| 91 |
< |
|
| 92 |
< |
void setElectrostaticCutoffRadius( RealType theECR, RealType theRSW ); |
| 91 |
> |
virtual RealType getSuggestedCutoffRadius(pair<AtomType*, AtomType*> atypes); |
| 92 |
> |
void setCutoffRadius( RealType rCut ); |
| 93 |
> |
void setSwitchingRadius( RealType rSwitch ); |
| 94 |
|
void setElectrostaticSummationMethod( ElectrostaticSummationMethod esm ); |
| 95 |
|
void setElectrostaticScreeningMethod( ElectrostaticScreeningMethod sm ); |
| 96 |
|
void setDampingAlpha( RealType alpha ); |
| 100 |
|
void initialize(); |
| 101 |
|
string name_; |
| 102 |
|
bool initialized_; |
| 103 |
< |
bool haveDefaultCutoff_; |
| 103 |
> |
bool haveCutoffRadius_; |
| 104 |
|
bool haveDampingAlpha_; |
| 105 |
|
bool haveDielectric_; |
| 106 |
|
bool haveElectroSpline_; |
| 107 |
|
std::map<int, AtomType*> ElectrostaticList; |
| 108 |
|
std::map<AtomType*, ElectrostaticAtomData> ElectrostaticMap; |
| 109 |
+ |
SimInfo* info_; |
| 110 |
|
ForceField* forceField_; |
| 111 |
< |
RealType defaultCutoff_; |
| 112 |
< |
RealType defaultCutoff2_; |
| 111 |
> |
RealType cutoffRadius_; |
| 112 |
> |
RealType cutoffRadius2_; |
| 113 |
|
RealType pre11_; |
| 114 |
|
RealType pre12_; |
| 115 |
|
RealType pre22_; |
| 120 |
|
int np_; |
| 121 |
|
ElectrostaticSummationMethod summationMethod_; |
| 122 |
|
ElectrostaticScreeningMethod screeningMethod_; |
| 123 |
+ |
map<string, ElectrostaticSummationMethod> summationMap_; |
| 124 |
+ |
map<string, ElectrostaticScreeningMethod> screeningMap_; |
| 125 |
|
RealType dampingAlpha_; |
| 126 |
|
RealType alpha2_; |
| 127 |
|
RealType alpha4_; |