93 class EAM :
public MetallicInteraction {
96 void setForceField(
ForceField* ff) { forceField_ = ff; };
97 void setElectrostatic(
Electrostatic* el) { electrostatic_ = el; };
98 void setSimulatedAtomTypes(AtomTypeSet& simtypes) {
103 void addExplicitInteraction(
AtomType* atype1,
AtomType* atype2, RealType dr,
104 int nr, std::vector<RealType> phiAB);
106 void addExplicitInteraction(
AtomType* atype1,
AtomType* atype2, RealType re,
107 RealType alpha, RealType beta, RealType A,
108 RealType B, RealType kappa, RealType lambda);
110 void addExplicitInteraction(
AtomType* atype1,
AtomType* atype2, RealType re,
111 RealType alpha, RealType A, RealType Ci,
114 RealType fastPower(RealType x,
int y);
128 RealType PhiCoreCore(RealType r, RealType re, RealType A, RealType alpha,
130 RealType PhiCoreValence(RealType r, RealType re, RealType B, RealType beta,
133 RealType Phi(RealType r, RealType re, RealType A, RealType B,
134 RealType alpha, RealType beta, RealType kappa,
137 RealType Rho(RealType r, RealType re, RealType fe, RealType beta,
139 RealType gFunc(RealType q, RealType nV, RealType nM);
140 RealType gPrime(RealType q, RealType nV, RealType nM);
141 RealType Zhou2001Functional(RealType rho, RealType rhoe,
142 std::vector<RealType> Fn,
143 std::vector<RealType> F, RealType Fe,
145 RealType Zhou2004Functional(RealType rho, RealType rhoe, RealType rhos,
146 std::vector<RealType> Fn,
147 std::vector<RealType> F, RealType Fe,
148 RealType eta, RealType rhol, RealType rhoh);
149 RealType Zhou2005Functional(RealType rho, RealType rhoe, RealType rhos,
150 std::vector<RealType> Fn,
151 std::vector<RealType> F, RealType F3plus,
152 RealType F3minus, RealType Fe, RealType eta);
153 RealType Zhou2005OxygenFunctional(RealType rho,
154 std::vector<RealType> OrhoLimits,
155 std::vector<RealType> OrhoE,
156 std::vector<std::vector<RealType>> OF);
157 RealType RoseFunctional(RealType rho, RealType rhoe, RealType F0);
160 void calcFunctional(
SelfData& sdat);
163 virtual string getName() {
return name_; }
164 virtual int getHash() {
return EAM_INTERACTION; }
165 virtual RealType getSuggestedCutoffRadius(
166 pair<AtomType*, AtomType*> atypes);
167 void setCutoffRadius(RealType rCut);
174 bool haveCutoffRadius_;
180 vector<vector<EAMInteractionData>>
186 AtomTypeSet simTypes_;
192 EAMMixingMethod mixMeth_;