00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef _EAM_H
00010 #define _EAM_H
00011
00012 #include "mdparallel.h"
00013
00014 class EAMFrame : public MDPARALLELFrame
00015 {
00016 public:
00017 int pottype;
00018 int eamfiletype;
00019 int eamgrid;
00020
00021 #define NGRID 6000
00022 char title3[100];
00023 int ntyp;
00024 double rmass, rlatt, drar, drhoar, actual, actual2, rmin;
00025 double rho[2][NGRID], rhop[2][NGRID], phi[2][NGRID], phip[2][NGRID];
00026 double phix[NGRID], phipx[NGRID];
00027 double frho[2][NGRID], frhop[2][NGRID];
00028 double rho_spline[2][NGRID][4], phi_spline[2][NGRID][4];
00029 double phix_spline[NGRID][4], frho_spline[2][NGRID][4];
00030 double rval[NGRID], rhoval[NGRID];
00031 double petrip, rhocon, rhomax;
00032 double *atpe3b, *rhotot, *embf, *embfp;
00033 int *nbst;
00034
00035 EAMFrame() : pottype(1), eamfiletype(0), eamgrid(NGRID),
00036 ntyp(0), rmass(0), rlatt(0), drar(0), drhoar(0),
00037 actual(0), actual2(0), rmin(0),
00038 petrip(0), rhocon(0), rhomax(0) {};
00039
00040 virtual void potential ();
00041 virtual void potential_energyonly();
00042 virtual double potential_energyonly (int iatom);
00043 void kraeam();
00044 void rhoeam();
00045 void kraMEAM();
00046 void rhoMEAM();
00047 int readeam();
00048 int readMEAM();
00049
00050 double rhoeam(int iatom);
00051 double kraeam_energyonly(int iatom);
00052
00053 virtual void Alloc();
00054 virtual void initvars();
00055 virtual void initparser();
00056
00057 virtual int exec(char *nam);
00058
00059 #ifdef _PARALLEL
00060 void Broadcast_EAM_Param();
00061 #endif
00062 };
00063
00064
00065 #endif // _EAM_H
00066