74 |
|
public: |
75 |
|
EAM(); |
76 |
|
void setForceField(ForceField *ff) {forceField_ = ff;}; |
77 |
+ |
void setSimulatedAtomTypes(set<AtomType*> &simtypes) {simTypes_ = simtypes;}; |
78 |
|
void addType(AtomType* atomType); |
79 |
|
void addExplicitInteraction(AtomType* atype1, AtomType* atype2, RealType dr, int nr, std::vector<RealType> phiAB); |
80 |
|
void calcDensity(InteractionData &idat); |
81 |
|
void calcFunctional(SelfData &sdat); |
82 |
|
void calcForce(InteractionData &idat); |
83 |
|
virtual string getName() { return name_; } |
84 |
+ |
virtual int getHash() { return EAM_PAIR; } |
85 |
|
virtual RealType getSuggestedCutoffRadius(pair<AtomType*,AtomType*> atypes); |
86 |
|
void setCutoffRadius( RealType rCut ); |
87 |
|
|
92 |
|
|
93 |
|
bool initialized_; |
94 |
|
bool haveCutoffRadius_; |
95 |
< |
std::map<int, AtomType*> EAMlist; |
96 |
< |
std::map<AtomType*, EAMAtomData> EAMMap; |
97 |
< |
std::map<std::pair<AtomType*, AtomType*>, EAMInteractionData> MixingMap; |
95 |
> |
set<int> EAMtypes; /**< The set of AtomType idents that are EAM types */ |
96 |
> |
vector<int> EAMtids; /**< The mapping from AtomType ident -> EAM type ident */ |
97 |
> |
vector<EAMAtomData> EAMdata; /**< The EAM atomic data indexed by EAM type ident */ |
98 |
> |
vector<vector<EAMInteractionData> > MixingMap; /**< The mixing parameters between two EAM types */ |
99 |
> |
int nEAM_; |
100 |
> |
|
101 |
|
ForceField* forceField_; |
102 |
+ |
set<AtomType*> simTypes_; |
103 |
|
RealType eamRcut_; |
104 |
|
EAMMixingMethod mixMeth_; |
105 |
|
string name_; |