10 #define E1 2.01458*1e2//eV
11 #define E2 6.59288*1e-3//eV
12 #define r01 0.83591//A
13 #define r02 4.46867//A
14 #define a1 2.97758//1/A
15 #define a2 1.54927//1/A
16 #define d 0.86225*1e-2//A
21 #define S2 40.//eV/A^4
22 #define S3 1.15*1e3//eV/A^4
24 #define r03 -2.19885//A
25 #define r04 -2.61984*1e2//A
26 #define b1 0.17394//A^-2
27 #define b2 5.35661*1e2//1/A
28 #define F0 -2.28235//eV
29 #define F2 1.35535//eV
30 #define q1 -1.27775//eV
31 #define q2 -0.86074//eV
32 #define q3 1.78804//eV
33 #define q4 2.97571//eV
41 double M (double r
, double r0
, double alpha
) {
42 return exp (-2.*alpha
*(r
-r0
)) - 2.*exp (-alpha
*(r
-r0
));
45 double psi (double x
) {
46 if (x
>= 0.) return 0.;
47 else return pow (x
, 4.) / (1.+pow (x
, 4.) );
51 if (x
>= 0) return 1.;
56 return ( E1
*M(r
,r01
,a1
) + E2
*M(r
,r02
,a2
) + d
) * psi ( (r
-rc
)/h
) -
57 H (rs1
-r
)*S1
*pow (rs1
-r
, 4.) -
58 H (rs2
-r
)*S2
*pow (rs2
-r
, 4.) -
59 H (rs3
-r
)*S3
*pow (rs3
-r
, 4.);
62 double rho (double r
) {
63 return ( a
*exp (-b1
*pow (r
-r03
, 2.)) + exp (-b2
*(r
-r04
)) ) * psi ( (r
-rc
)/h
);
66 double F (double rho_
) {
68 return F0
+ .5*F2
*pow (rho_
-1., 2.)
72 + q4
*pow (rho_
-1.,6.);
74 return ( F0
+ .5*F2
*pow (rho_
-1., 2.) + q1
*pow (rho_
-1., 3.) + Q1
*pow (rho_
-1., 4.)) /
75 ( 1. + Q2
*pow (rho_
-1., 3.) );
83 double dr
= rmax
/(double)Nr
;
85 double rhomax
= rho (0.);
86 double drho
= rhomax
/(double)Nrho
;
88 int atomic_number
= 1;
90 double lattice_constant
= 3.615;
91 char lattice_type
[] = "FCC";
95 char LAMMPSFilename
[] = "Cu_Mishin1.eam";
96 FILE *LAMMPSFile
= fopen (LAMMPSFilename
, "w");
97 if (!LAMMPSFile
) exit (ERROR
);
99 // Header for setfl format
100 fprintf (LAMMPSFile
, \
101 "#-> LAMMPS Potential File in DYNAMO 86 setfl Format <-#\n"\
102 "# Mishin Cu EAM1 PRB(2001)63:224106\n"\
103 "# Implemented by G. Ziegenhain (2007) gerolf@ziegenhain.com \n"\
105 "%d %20.20f %d %20.20f %20.20f\n"\
106 "%d %20.20f %20.20f %s\n",
108 Nrho
, drho
, Nr
, dr
, rc
,
109 atomic_number
, mass
, lattice_constant
, lattice_type
);
111 // Embedding function
112 for (i
= 0; i
< Nrho
; i
++)
113 fprintf (LAMMPSFile
, "%20.20f\n", F ((double)i
*drho
));
115 for (i
= 0; i
< Nr
; i
++)
116 fprintf (LAMMPSFile
, "%20.20f\n", rho ((double)i
*dr
));
118 for (i
= 0; i
< Nr
; i
++)
119 fprintf (LAMMPSFile
, "%20.20f\n", V ((double)i
*dr
) * (double)i
*dr
);