LAMMPS Fracture

From EVOCD
(Difference between revisions)
Jump to: navigation, search
(Created page with '== Abstract == This example shows how to run an atomistic simulation of fracture of an iron symmetric tilt grain boundary. A parallel molecular dynamics code, LAMMPS<ref>S. Plim…')
 
 
(23 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
== Questions / Comments ==
 +
 +
Please contact me if you have any questions or comments about this tutorial.
 +
 +
Email: Mark Tschopp, [mailto:mark.tschopp@gatech.edu mark.tschopp@gatech.edu]
 +
 
== Abstract ==
 
== Abstract ==
  
This example shows how to run an atomistic simulation of fracture of an iron symmetric tilt grain boundary. A parallel molecular dynamics code, LAMMPS<ref>S. Plimpton, "Fast Parallel Algorithms for Short-Range Molecular Dynamics," J. Comp. Phys., 117, 1-19 (1995). </ref>, is used to calculate stresses at the grain boundary as the strain of the bicrystal is incrementally increased. A stress-strain curve is plotted as a result of the simulation.
+
This example shows how to run an atomistic simulation of fracture of an iron symmetric tilt grain boundary. A parallel molecular dynamics code, LAMMPS<ref>S. Plimpton, "Fast Parallel Algorithms for Short-Range Molecular Dynamics," J. Comp. Phys., 117, 1-19 (1995). </ref>, is used to calculate stresses at the grain boundary as the strain of the bicrystal is incrementally increased. Matlab is used to plot a stress-strain curve, and AtomEye<ref>J. Li, "AtomEye: an efficient atomistic configuration viewer," Modelling Simul. Mater. Sci. Eng. 11 (2003) 173. </ref>. is used to visualize the simulation.
  
 
Author(s): [http://www.hpc.msstate.edu/directory/information.php?eid=1967 Mark A. Tschopp], Nathan R. Rhodes
 
Author(s): [http://www.hpc.msstate.edu/directory/information.php?eid=1967 Mark A. Tschopp], Nathan R. Rhodes
Line 15: Line 21:
 
=== Grain boundary structure file ===
 
=== Grain boundary structure file ===
  
This grain boundary structure was generated prior to this example. To use it, store the text in "Fe_100_sig5_210.txt."
+
The grain boundary structure that was generated prior to this example can be found [[Fe_110_sig3.txt | here]]. Store the text in "Fe_110_sig3.txt" to use it.
  
{|border ="0"
+
=== LAMMPS input script ===
|<pre>
+
# Minimum Energy GB Structure for LAMMPS  
+
  
380 atoms
+
This input script was run using the November 2010 version of LAMMPS. Changes in some commands in more recent versions may require revision of the input script. This script runs the simulation with a previously generated grain boundary file, which is fed to the variable "datfile." The variable "nloop" defines how many times the strain will be increased and the number of points at which the stress is calculated. Other variables, such as the strain increment and the number of replications, can be changed in the input file. To run this script, store it in "in.gb_fracture.txt" and use "lmp_exe -var datfile Fe_110_sig3.txt -var nloop 100 < in.gb_fracture.txt
2 atom types
+
" in a UNIX environment where "lmp_exe" refers to the LAMMPS executable.
0.000000 6.384670 xlo xhi 
+
-121.638000 121.638000 ylo yhi 
+
0.000000 2.855310 zlo zhi 
+
  
Atoms
+
Before strain is applied to the atoms, those atoms that are far from the grain boundary (defined by the variable deldist) are deleted to prevent unwanted transitions between periodic boundaries and to decrease simulation time. Then two smaller groups of atoms (width of groups defined by difference in variables deldist and fixdist) are fixed by setting their forces equal to zero. These same fixed groups are then incrementally strained until the grain boundary fractures.
 
+
1 1 4.460670 -121.056000 1.427660 
+
2 1 0.121831 -121.349998 0.000000 
+
3 1 0.614806 -119.457001 1.427660 
+
4 1 2.536320 -120.134003 0.000000 
+
5 1 3.193350 -118.271004 1.427660 
+
6 1 5.056950 -118.997002 0.000000 
+
7 1 5.717690 -117.030998 1.427660 
+
8 1 1.272510 -117.596001 0.000000 
+
9 1 1.907410 -115.704002 1.427660 
+
10 1 3.820340 -116.360001 0.000000 
+
11 1 4.457650 -114.445999 1.427660 
+
12 1 6.366010 -115.097000 0.000000 
+
13 1 0.623987 -113.174004 1.427660 
+
14 1 2.543940 -113.799004 0.000000 
+
15 1 3.182210 -111.888000 1.427660 
+
16 1 5.096380 -112.530998 0.000000 
+
17 1 5.735870 -110.615997 1.427660 
+
18 1 1.265040 -111.255997 0.000000 
+
19 1 1.905550 -109.338997 1.427660 
+
20 1 3.821420 -109.974998 0.000000 
+
21 1 4.461220 -108.060997 1.427660 
+
22 1 6.375800 -108.699997 0.000000 
+
23 1 0.631379 -106.785004 1.427660 
+
24 1 2.545990 -107.422997 0.000000 
+
25 1 3.186490 -105.508003 1.427660 
+
26 1 5.101420 -106.146004 0.000000 
+
27 1 5.741860 -104.231003 1.427660 
+
28 1 1.271840 -104.870003 0.000000 
+
29 1 1.912420 -102.955002 1.427660 
+
30 1 3.827090 -103.593002 0.000000 
+
31 1 4.467730 -101.678001 1.427660 
+
32 1 6.382440 -102.316002 0.000000 
+
33 1 0.638419 -100.401001 1.427660 
+
34 1 2.553070 -101.039001 0.000000 
+
35 1 3.193740 -99.124397 1.427660 
+
36 1 5.108410 -99.762802 0.000000 
+
37 1 5.749090 -97.847702 1.427660 
+
38 1 1.279090 -98.486000 0.000000 
+
39 1 1.919780 -96.570999 1.427660 
+
40 1 3.834430 -97.209297 0.000000 
+
41 1 4.475120 -95.294296 1.427660 
+
42 1 0.005111 -95.932602 0.000000 
+
43 1 0.645805 -94.017502 1.427660 
+
44 1 2.560460 -94.655899 0.000000 
+
45 1 3.201160 -92.740799 1.427660 
+
46 1 5.115820 -93.379204 0.000000 
+
47 1 5.756520 -91.463997 1.427660 
+
48 1 1.286510 -92.102402 0.000000 
+
49 1 1.927220 -90.187202 1.427660 
+
50 1 3.841870 -90.825600 0.000000 
+
51 1 4.482580 -88.910500 1.427660 
+
52 1 0.012563 -89.548897 0.000000 
+
53 1 0.653283 -87.633698 1.427660 
+
54 1 2.567930 -88.272102 0.000000 
+
55 1 3.208660 -86.356796 1.427660 
+
56 1 5.123310 -86.995300 0.000000 
+
57 1 5.764040 -85.080002 1.427660 
+
58 1 1.294010 -85.718399 0.000000 
+
59 1 1.934750 -83.803200 1.427660 
+
60 1 3.849390 -84.441597 0.000000 
+
61 1 4.490130 -82.526299 1.427660 
+
62 1 0.020102 -83.164803 0.000000 
+
63 1 0.660844 -81.249496 1.427660 
+
64 1 2.575490 -81.887901 0.000000 
+
65 1 3.216230 -79.972603 1.427660 
+
66 1 5.130870 -80.611099 0.000000 
+
67 1 5.771630 -78.695801 1.427660 
+
68 1 1.301590 -79.334198 0.000000 
+
69 1 1.942350 -77.418900 1.427660 
+
70 1 3.856990 -78.057297 0.000000 
+
71 1 4.497740 -76.141998 1.427660 
+
72 1 0.027709 -76.780502 0.000000 
+
73 1 0.668470 -74.865196 1.427660 
+
74 1 2.583110 -75.503601 0.000000 
+
75 1 3.223870 -73.588303 1.427660 
+
76 1 5.138510 -74.226700 0.000000 
+
77 1 5.779270 -72.311401 1.427660 
+
78 1 1.309240 -72.949799 0.000000 
+
79 1 1.950010 -71.034500 1.427660 
+
80 1 3.864640 -71.672997 0.000000 
+
81 1 4.505410 -69.757698 1.427660 
+
82 1 0.035374 -70.396103 0.000000 
+
83 1 0.676151 -68.480797 1.427660 
+
84 1 2.590780 -69.119202 0.000000 
+
85 1 3.231560 -67.203903 1.427660 
+
86 1 5.146190 -67.842400 0.000000 
+
87 1 5.786980 -65.927002 1.427660 
+
88 1 1.316930 -66.565498 0.000000 
+
89 1 1.957720 -64.650200 1.427660 
+
90 1 3.872350 -65.288597 0.000000 
+
91 1 4.513140 -63.373299 1.427660 
+
92 1 0.043091 -64.011703 0.000000 
+
93 1 0.683885 -62.096401 1.427660 
+
94 1 2.598510 -62.734901 0.000000 
+
95 1 5.153930 -61.458000 0.000000 
+
96 1 3.239310 -60.819599 1.427660 
+
97 1 5.794730 -59.542702 1.427660 
+
98 1 1.324680 -60.181099 0.000000 
+
99 1 1.965490 -58.265800 1.427660 
+
100 1 3.880110 -58.904301 0.000000 
+
101 1 4.520920 -56.988899 1.427660 
+
102 1 0.050868 -57.627399 0.000000 
+
103 1 0.691679 -55.712101 1.427660 
+
104 1 2.606300 -56.350498 0.000000 
+
105 1 3.247110 -54.435200 1.427660 
+
106 1 5.161730 -55.073601 0.000000 
+
107 1 5.802550 -53.158298 1.427660 
+
108 1 1.332500 -53.796799 0.000000 
+
109 1 1.973320 -51.881500 1.427660 
+
110 1 3.887930 -52.519901 0.000000 
+
111 1 4.528760 -50.604599 1.427660 
+
112 1 0.058702 -51.243000 0.000000 
+
113 1 0.699532 -49.327702 1.427660 
+
114 1 2.614150 -49.966202 0.000000 
+
115 1 3.254980 -48.050900 1.427660 
+
116 1 5.169590 -48.689301 0.000000 
+
117 1 5.810430 -46.773998 1.427660 
+
118 1 1.340370 -47.412399 0.000000 
+
119 1 3.895820 -46.135601 0.000000 
+
120 1 1.981210 -45.497101 1.427660 
+
121 1 4.536660 -44.220299 1.427660 
+
122 1 0.066599 -44.858700 0.000000 
+
123 1 0.707446 -42.943401 1.427660 
+
124 1 2.622050 -43.581799 0.000000 
+
125 1 3.262900 -41.666599 1.427660 
+
126 1 5.177510 -42.305000 0.000000 
+
127 1 5.818360 -40.389702 1.427660 
+
128 1 1.348300 -41.028099 0.000000 
+
129 1 1.989150 -39.112900 1.427660 
+
130 1 3.903760 -39.751301 0.000000 
+
131 1 4.544610 -37.836102 1.427660 
+
132 1 0.074546 -38.474499 0.000000 
+
133 1 0.715404 -36.559200 1.427660 
+
134 1 2.630010 -37.197601 0.000000 
+
135 1 3.270870 -35.282398 1.427660 
+
136 1 5.185470 -35.920799 0.000000 
+
137 1 5.826330 -34.005600 1.427660 
+
138 1 1.356260 -34.644001 0.000000 
+
139 1 1.997120 -32.728901 1.427660 
+
140 1 3.911730 -33.367298 0.000000 
+
141 1 4.552590 -31.452101 1.427660 
+
142 1 0.082520 -32.090500 0.000000 
+
143 1 2.637990 -30.813700 0.000000 
+
144 1 0.723381 -30.175400 1.427660 
+
145 1 3.278850 -28.898600 1.427660 
+
146 1 5.193450 -29.537001 0.000000 
+
147 1 5.834320 -27.621901 1.427660 
+
148 1 1.364240 -28.260300 0.000000 
+
149 1 2.005110 -26.345200 1.427660 
+
150 1 3.919710 -26.983500 0.000000 
+
151 1 4.560580 -25.068501 1.427660 
+
152 1 0.090508 -25.706800 0.000000 
+
153 1 0.731376 -23.791800 1.427660 
+
154 1 2.645970 -24.430099 0.000000 
+
155 1 3.286830 -22.515100 1.427660 
+
156 1 5.201450 -23.153400 0.000000 
+
157 1 5.842320 -21.238300 1.427660 
+
158 1 1.372240 -21.876699 0.000000 
+
159 1 2.013090 -19.961599 1.427660 
+
160 1 3.927680 -20.600100 0.000000 
+
161 1 4.568500 -18.685101 1.427660 
+
162 1 0.098511 -19.323200 2.855310 
+
163 1 0.739356 -17.408100 1.427660 
+
164 1 2.653910 -18.046499 0.000000 
+
165 1 3.294660 -16.131399 1.427660 
+
166 1 5.209240 -16.770100 0.000000 
+
167 1 1.380180 -15.492800 0.000000 
+
168 1 5.849840 -14.855400 1.427660 
+
169 1 2.021010 -13.577200 1.427660 
+
170 1 3.935270 -14.216300 0.000000 
+
171 1 4.575630 -12.301200 1.427660 
+
172 1 0.105523 -12.941000 0.000000 
+
173 1 0.745482 -11.027400 1.427660 
+
174 1 2.661980 -11.660800 0.000000 
+
175 1 3.303420 -9.742730 1.427660 
+
176 1 5.215560 -10.386400 0.000000 
+
177 1 5.854650 -8.472240 1.427660 
+
178 1 1.384840 -9.115630 0.000000 
+
179 1 2.023040 -7.207600 1.427660 
+
180 1 3.946290 -7.820610 0.000000 
+
181 1 4.593240 -5.888760 1.427660 
+
182 1 0.107342 -6.560490 0.000000 
+
183 1 0.736295 -4.654560 1.427660 
+
184 1 2.661220 -5.308910 0.000000 
+
185 1 3.308560 -3.425320 1.427660 
+
186 1 5.251020 -3.931570 0.000000 
+
187 1 5.922660 -1.878590 1.427660 
+
188 1 1.382770 -2.796470 0.000000 
+
189 1 1.956110 -0.866116 1.427660 
+
190 1 3.884190 -1.577170 0.000000 
+
191 1 4.490600 0.288597 1.427660 
+
192 1 0.151759 0.582346 0.000000 
+
193 1 5.279410 4.607850 0.000000 
+
194 1 5.940150 2.641370 1.427660 
+
195 1 1.419070 3.367500 0.000000 
+
196 1 2.076100 1.503900 1.427660 
+
197 1 3.997620 2.181050 0.000000 
+
198 1 4.631090 6.541390 1.427660 
+
199 1 0.154781 7.192120 0.000000 
+
200 1 0.792089 5.277900 1.427660 
+
201 1 2.705010 5.934540 0.000000 
+
202 1 3.339920 4.042430 1.427660 
+
203 1 5.261230 11.022900 0.000000 
+
204 1 5.900710 9.107370 1.427660 
+
205 1 1.430210 9.750370 0.000000 
+
206 1 2.068490 7.839800 1.427660 
+
207 1 3.988440 8.464370 0.000000 
+
208 1 4.621300 12.938200 1.427660 
+
209 1 0.151208 13.577700 0.000000 
+
210 1 0.791010 11.663500 1.427660 
+
211 1 2.706870 12.299300 0.000000 
+
212 1 3.347390 10.382800 1.427660 
+
213 1 2.066440 14.215000 1.427660 
+
214 1 3.981050 14.853500 0.000000 
+
215 1 5.255240 17.407301 0.000000 
+
216 1 5.895680 15.492400 1.427660 
+
217 1 1.425940 16.130301 0.000000 
+
218 1 4.614660 19.322300 1.427660 
+
219 1 0.144696 19.960501 0.000000 
+
220 1 0.785341 18.045401 1.427660 
+
221 1 2.700010 18.683800 0.000000 
+
222 1 3.340590 16.768700 1.427660 
+
223 1 5.248010 23.790701 0.000000 
+
224 1 5.888690 21.875601 1.427660 
+
225 1 1.418680 22.514000 0.000000 
+
226 1 2.059360 20.598900 1.427660 
+
227 1 3.974010 21.237301 0.000000 
+
228 1 4.607320 25.705799 1.427660 
+
229 1 0.137305 26.344101 0.000000 
+
230 1 0.777994 24.429001 1.427660 
+
231 1 2.692650 25.067400 0.000000 
+
232 1 3.333340 23.152300 1.427660 
+
233 1 5.240580 30.174400 0.000000 
+
234 1 5.881280 28.259199 1.427660 
+
235 1 1.411260 28.897600 0.000000 
+
236 1 2.051960 26.982500 1.427660 
+
237 1 3.966620 27.620899 0.000000 
+
238 1 3.325920 29.535999 1.427660 
+
239 1 4.599860 32.089500 1.427660 
+
240 1 0.129844 32.727901 0.000000 
+
241 1 0.770558 30.812700 1.427660 
+
242 1 2.685210 31.451099 0.000000 
+
243 1 5.233060 36.558399 0.000000 
+
244 1 5.873790 34.643101 1.427660 
+
245 1 1.403770 35.281502 0.000000 
+
246 1 2.044490 33.366299 1.427660 
+
247 1 3.959140 34.004700 0.000000 
+
248 1 4.592330 38.473598 1.427660 
+
249 1 0.122297 39.112000 0.000000 
+
250 1 0.763037 37.196800 1.427660 
+
251 1 2.677680 37.835201 0.000000 
+
252 1 3.318420 35.919899 1.427660 
+
253 1 5.225470 42.942600 0.000000 
+
254 1 5.866220 41.027302 1.427660 
+
255 1 1.396190 41.665798 0.000000 
+
256 1 2.036940 39.750500 1.427660 
+
257 1 3.951580 40.388901 0.000000 
+
258 1 4.584720 44.857899 1.427660 
+
259 1 0.114684 45.496399 0.000000 
+
260 1 0.755441 43.581100 1.427660 
+
261 1 2.670080 44.219501 0.000000 
+
262 1 3.310830 42.304199 1.427660 
+
263 1 5.217830 49.327000 0.000000 
+
264 1 5.858590 47.411701 1.427660 
+
265 1 1.388560 48.050098 0.000000 
+
266 1 2.029320 46.134800 1.427660 
+
267 1 3.943960 46.773201 0.000000 
+
268 1 4.577050 51.242298 1.427660 
+
269 1 0.107013 51.880699 0.000000 
+
270 1 0.747787 49.965401 1.427660 
+
271 1 2.662420 50.603901 0.000000 
+
272 1 3.303190 48.688499 1.427660 
+
273 1 5.210120 55.711300 0.000000 
+
274 1 5.850910 53.796001 1.427660 
+
275 1 1.380860 54.434502 0.000000 
+
276 1 2.021640 52.519199 1.427660 
+
277 1 3.936280 53.157600 0.000000 
+
278 1 4.569340 57.626701 1.427660 
+
279 1 0.099290 58.265099 0.000000 
+
280 1 0.740080 56.349800 1.427660 
+
281 1 2.654710 56.988201 0.000000 
+
282 1 3.295490 55.072899 1.427660 
+
283 1 5.843170 60.180401 1.427660 
+
284 1 1.373120 60.818802 0.000000 
+
285 1 2.013920 58.903500 1.427660 
+
286 1 3.928540 59.542000 0.000000 
+
287 1 5.202370 62.095699 0.000000 
+
288 1 4.561560 64.011002 1.427660 
+
289 1 0.091508 64.649399 0.000000 
+
290 1 0.732316 62.734100 1.427660 
+
291 1 2.646940 63.372601 2.855310 
+
292 1 3.287740 61.457298 1.427660 
+
293 1 5.194550 68.480003 0.000000 
+
294 1 5.835370 66.564697 1.427660 
+
295 1 1.365310 67.203201 0.000000 
+
296 1 2.006130 65.287903 1.427660 
+
297 1 3.920750 65.926300 0.000000 
+
298 1 4.553720 70.395401 1.427660 
+
299 1 0.083667 71.033798 0.000000 
+
300 1 0.724493 69.118500 1.427660 
+
301 1 2.639110 69.756897 0.000000 
+
302 1 3.279930 67.841599 1.427660 
+
303 1 5.186670 74.864403 0.000000 
+
304 1 5.827510 72.949097 1.427660 
+
305 1 1.357450 73.587502 0.000000 
+
306 1 1.998280 71.672203 1.427660 
+
307 1 3.912890 72.310699 0.000000 
+
308 1 0.716608 75.502800 1.427660 
+
309 1 3.272060 74.225998 1.427660 
+
310 1 4.545830 76.779701 1.427660 
+
311 1 0.075764 77.418098 0.000000 
+
312 1 2.631220 76.141296 0.000000 
+
313 1 5.178740 81.248703 0.000000 
+
314 1 5.819590 79.333397 1.427660 
+
315 1 1.349520 79.971802 0.000000 
+
316 1 1.990370 78.056503 1.427660 
+
317 1 3.904980 78.695000 0.000000 
+
318 1 4.537880 83.163902 1.427660 
+
319 1 0.067814 83.802299 0.000000 
+
320 1 0.708670 81.887100 1.427660 
+
321 1 2.623280 82.525497 0.000000 
+
322 1 3.264130 80.610199 1.427660 
+
323 1 5.170770 87.632698 0.000000 
+
324 1 5.811630 85.717598 1.427660 
+
325 1 1.341560 86.356003 0.000000 
+
326 1 1.982420 84.440697 1.427660 
+
327 1 3.897020 85.079102 0.000000 
+
328 1 4.529910 89.547897 1.427660 
+
329 1 0.059838 90.186302 0.000000 
+
330 1 0.700700 88.271103 1.427660 
+
331 1 2.615300 88.909500 0.000000 
+
332 1 3.256160 86.994301 1.427660 
+
333 1 1.974440 90.824699 1.427660 
+
334 1 5.162780 94.016502 0.000000 
+
335 1 5.803650 92.101402 1.427660 
+
336 1 1.333580 92.739799 0.000000 
+
337 1 3.889050 91.462997 0.000000 
+
338 1 4.521920 95.931602 1.427660 
+
339 1 0.051848 96.569901 0.000000 
+
340 1 0.692713 94.654900 1.427660 
+
341 1 2.607320 95.293198 0.000000 
+
342 1 3.248180 93.378098 1.427660 
+
343 1 5.154780 100.400002 0.000000 
+
344 1 5.795650 98.485001 1.427660 
+
345 1 1.325590 99.123299 0.000000 
+
346 1 1.966450 97.208298 1.427660 
+
347 1 3.881050 97.846603 0.000000 
+
348 1 4.513920 102.315002 1.427660 
+
349 1 0.043927 102.953003 0.000000 
+
350 1 0.684743 101.038002 1.427660 
+
351 1 2.599330 101.677002 0.000000 
+
352 1 3.240190 99.761703 1.427660 
+
353 1 5.787860 104.867996 1.427660 
+
354 1 1.317770 105.507004 0.000000 
+
355 1 1.958510 103.592003 1.427660 
+
356 1 3.873070 104.230003 0.000000 
+
357 1 3.232240 106.146004 1.427660 
+
358 1 5.147260 106.782997 0.000000 
+
359 1 4.506900 108.696999 1.427660 
+
360 1 0.036794 109.336998 0.000000 
+
361 1 0.677159 107.421997 1.427660 
+
362 1 2.591410 108.060997 0.000000 
+
363 1 5.142450 113.166000 0.000000 
+
364 1 5.781540 111.251999 1.427660 
+
365 1 1.309010 111.896004 0.000000 
+
366 1 1.950450 109.977997 1.427660 
+
367 1 3.866940 110.611000 0.000000 
+
368 1 4.505080 115.078003 1.427660 
+
369 1 0.019188 115.750000 0.000000 
+
370 1 0.666139 113.818001 1.427660 
+
371 1 2.589390 114.431000 0.000000 
+
372 1 3.227590 112.523003 1.427660 
+
373 1 5.074440 119.760002 0.000000 
+
374 1 5.746080 117.707001 1.427660 
+
375 1 1.303870 118.212997 0.000000 
+
376 1 1.951210 116.329002 1.427660 
+
377 1 3.876130 116.984001 0.000000 
+
378 1 0.728234 120.060997 1.427660 
+
379 1 2.656320 120.772003 0.000000 
+
380 1 3.229660 118.842003 1.427660 
+
</pre>
+
|}
+
 
+
=== LAMMPS input script ===
+
 
+
This input script was run using the November 2010 version of LAMMPS. Changes in some commands in more recent versions may require revision of the input script. This script runs the simulation with a previously generated grain boundary file, which is fed to the variable "datfile." The variable "nloop" defines how many times the strain will be increased and the number of points at which the stress is calculated. To run this script, store it in "in.gb_fracture.txt" and use "lmp_exe < in.gb_fracture.txt" in a UNIX environment where "lmp_exe" refers to the LAMMPS executable.
+
  
 
{|border  ="0"
 
{|border  ="0"
 
|<pre>
 
|<pre>
 
############################################################################
 
############################################################################
# Interfacial fracture
+
# Interfacial Fracture
# Mark Tschopp, 2010
+
# Mark Tschopp, Nathan Rhodes 2011
 +
 
 +
# lmp_exe -var datfile Fe_110_sig3.txt -var nloop 100 < in.gb_fracture.txt
  
# lmp_exe -var datfile Fe_100_sig52_10.txt -var strain 0.001 -var nloop 100 -var minlength 20 < in.gb_fracture.txt
+
# Simulation deletes atoms outside of +/- deldist from GB and constrains and pulls
 +
# atoms outside of +/- fixdist from GB to fracture the GB
 
############################################################################
 
############################################################################
  
variable datfile index Fe_100_sig5_210.txt
+
#variable datfile index Fe_110_sig3.txt
 
variable strain equal 0.001
 
variable strain equal 0.001
variable nloop equal 100
+
#variable nloop equal 100
#variable repl equal 1
+
variable repx equal 1
 +
variable repz equal 1
 
variable strain2 equal "1+v_strain"
 
variable strain2 equal "1+v_strain"
 +
variable deldist equal 50
 +
variable fixdist equal 45
  
 
######################################
 
######################################
Line 453: Line 73:
 
print "lz: ${zlen}"
 
print "lz: ${zlen}"
  
# Determine number of increments for displacement grid in the in-plane GB directions
+
# Replicate simulation cell in each direction
variable xrepl equal "ceil(v_minlength / v_xlen)"
+
replicate ${repx} 1 ${repz}
variable zrepl equal "ceil(v_minlength / v_zlen)"
+
 
+
replicate ${xrepl} 1 ${zrepl}
+
  
 
######################################
 
######################################
Line 464: Line 81:
 
pair_coeff * * Fe-C_Hepburn_Ackland.eam.fs Fe C
 
pair_coeff * * Fe-C_Hepburn_Ackland.eam.fs Fe C
  
 +
# Compute stress information for Atomeye visualization
 +
compute stress all stress/atom
 +
compute stress1 all reduce sum c_stress[1]
 +
compute stress2 all reduce sum c_stress[2]
 +
compute stress3 all reduce sum c_stress[3]
 +
compute stress4 all reduce sum c_stress[4]
 +
compute stress5 all reduce sum c_stress[5]
 +
compute stress6 all reduce sum c_stress[6]
 
##########################################
 
##########################################
# Minimize first?
+
# Minimize first
 
reset_timestep 0
 
reset_timestep 0
 
thermo 10
 
thermo 10
thermo_style custom step lx ly lz press pxx pyy pzz pe
+
thermo_style custom step lx ly lz press pxx pyy pzz pe c_stress1 c_stress2 c_stress3 c_stress4 c_stress5 c_stress6
 
min_style cg
 
min_style cg
 
fix 1 all box/relax x 0.0 z 0.0 couple none vmax 0.001  
 
fix 1 all box/relax x 0.0 z 0.0 couple none vmax 0.001  
Line 474: Line 99:
 
unfix 1
 
unfix 1
  
 +
# Compute distance for each side of the grain boundary to displace
 
variable ly1 equal ly
 
variable ly1 equal ly
 
variable ly0 equal ${ly1}
 
variable ly0 equal ${ly1}
Line 488: Line 114:
 
variable p8 equal "pe"
 
variable p8 equal "pe"
  
fix equil1 all print 1 "${p1} ${p2} ${p3} ${p4} ${p5} ${p6} ${p7} ${p8}" file data.${datfile}_${minlength}.txt screen no
+
# Output stress and strain information to datafile for Matlab post-processing
 +
fix equil1 all print 1 "${p1} ${p2} ${p3} ${p4} ${p5} ${p6} ${p7} ${p8}" file data.${datfile}.txt screen no
 
fix 1 all nve
 
fix 1 all nve
 
run 1
 
run 1
Line 495: Line 122:
 
variable pressf equal ${pressf1}
 
variable pressf equal ${pressf1}
  
 +
##########################################
 +
# Create cfg files with stress in y direction for AtomEye viewing
 +
 +
dump 1 all cfg 500 ${datfile}_*.cfg id type xs ys zs c_stress[2]
 +
##########################################
 +
# CREATE REGIONS FOR BOUNDARY CONDITIONS
 +
 +
# Delete groups of atoms far from boundary
 +
region rlow block 0 200 -200 -${deldist} 0 200 units box
 +
region rhigh block 0 200 ${deldist} 200 0 200 units box
 +
group glow region rlow
 +
group ghigh region rhigh
 +
 +
delete_atoms group glow
 +
delete_atoms group ghigh
 +
 +
# Create groups to fix and displace
 +
region rgblow block 0 200 -200 -${fixdist} 0 200 units box
 +
region rgbhigh block 0 200 ${fixdist} 200 0 200 units box
 +
group gbhigh region rgbhigh
 +
group gblow region rgblow
 +
 +
# Put fixed boundary condition on edge atoms by setting forces to zero
 +
fix 2 gbhigh setforce 0 0 0
 +
fix 3 gblow setforce 0 0 0
 
##########################################
 
##########################################
 
# MS Deformation loop
 
# MS Deformation loop
Line 502: Line 154:
  
 
# Increase box bound and minimize again
 
# Increase box bound and minimize again
reset_timestep 0
+
#reset_timestep 0
#displace_box all y scale ${strain2}
+
 
#fix 1 all box/relax x 10000.0 z 10000.0 couple none vmax 0.001
+
displace_box gblow y delta -${lydelta} 0 units box
displace_box all y delta -${lydelta} ${lydelta} units box
+
displace_box gbhigh y delta 0 ${lydelta} units box
 +
 
 
minimize 1.0e-25 1.0e-25 1000 10000
 
minimize 1.0e-25 1.0e-25 1000 10000
  
Line 514: Line 167:
 
print "Pressf: ${pressf}"
 
print "Pressf: ${pressf}"
 
print "Pdiff: ${pdiff}"
 
print "Pdiff: ${pdiff}"
if ${pdiff} > 10000 then "exit"
+
#if ${pdiff} > 10000 then "exit"
 
variable pressf1 equal pyy
 
variable pressf1 equal pyy
 
variable pressf equal ${pressf1}
 
variable pressf equal ${pressf1}
Line 533: Line 186:
 
=== LAMMPS datafile ===
 
=== LAMMPS datafile ===
  
The following file, named "data.Fe_100_sig52_10.txt" should have been created in addition to the log.lammps file. This file stores strain information in the first column, stress tensor information in the second through seventh columns, and stores the total potential energy of the cell in the eight column. The simulation should have looped 100 times (as per the "nloop" variable), so there should be 100 entries (which end at a strain of 0.1) plus the initial entry of stress and strain at zero.
+
The following file, named "data.Fe_110_sig3.txt" should have been created in addition to the log.lammps file. This file stores strain information in the first column, stress tensor information in the second through seventh columns, and stores the total potential energy of the cell in the eight column. The simulation should have looped 100 times (as per the "nloop" variable), so there should be 100 entries (which end at a strain of 0.1) plus the initial entry of stress and strain at zero.
  
 
{|border  ="0"
 
{|border  ="0"
 
|<pre>
 
|<pre>
 
# Fix print output for fix equil1
 
# Fix print output for fix equil1
0 -2.219884235e-05 -0.09436668009 5.407552011e-06 1.221556825e-05 1.110009611e-09 4.462377068e-12 -48716.72405
+
0 -0.0001566341885 -0.04277905345 -0.0001735704412 -1.050347047e-06 -4.979630806e-16 -1.182662217e-15 -2403.177532
0.001 0.1468487572 0.1387359115 0.1431841846 -6.180770704e-09 -2.564170766e-12 -2.40791993e-12 -48716.76403
+
0.001 0.1410350669 0.2358351934 0.1410320946 -0.0008483136938 2.157375957e-16 5.10156062e-16 -953.8313633
0.002 0.2598702618 0.4058469325 0.2847557426 -4.808171999e-12 9.566142713e-16 -3.41722654e-15 -48716.52319
+
0.002 0.2093101255 0.4502201532 0.2093077625 -0.0008559731915 8.7476703e-16 4.741491304e-16 -953.8066728
0.003 0.3720478051 0.6731956939 0.4254156925 1.311052574e-10 3.449206559e-15 -2.636944941e-14 -48716.04581
+
0.003 0.2773789426 0.6636768305 0.2773773176 -0.0008616327062 6.889837825e-16 -3.49557936e-16 -953.7648879
0.004 0.483977058 0.9402201271 0.5652029445 -6.629325468e-12 1.129857588e-15 2.416966446e-14 -48715.3319
+
0.004 0.3452439027 0.8759462057 0.345242809 -0.00086663188 1.290557646e-16 1.847269505e-16 -953.7061129
0.005 0.5948099239 1.207643528 0.7041151176 -9.516316287e-13 2.79361336e-15 7.471854238e-15 -48714.38144
+
0.005 0.4128989894 1.086758848 0.412898328 -0.0008712926385 2.527957377e-18 4.348139418e-16 -953.6304752
 
...
 
...
 
</pre>
 
</pre>
 
|}
 
|}
 
  
 
== Post-Processing ==
 
== Post-Processing ==
Line 553: Line 205:
 
=== Stress-Strain Plot ===
 
=== Stress-Strain Plot ===
  
The stress-strain curve in Figure 1 can be generated using the following MATLAB script. Note that the definitions of stress and strain are negative. This is done to counteract the negative values of compressive stress and strain so that positive axes and a familiar shape are retained. The "exportfig" command saves the plot to a tiff files, but the plot can also be saved as a Mathcad figure once it appears.
+
The stress-strain curve in Figure 1 can be generated using the following MATLAB script. The "exportfig" command saves the plot to a tiff file, but the plot can also be saved as a Mathcad figure once it appears. The three principle stresses are plotted: pxx in red, pyy in blue, and pzz in green. The shear stresses (not plotted) are stored in the fourth, fifth, and sixth columns of the stress variable.
  
 
{|
 
{|
Line 559: Line 211:
 
{|border  ="0"
 
{|border  ="0"
 
|<pre>
 
|<pre>
% Analyze def1.txt files and plot the responses
+
%% Plot stress-strain curve from single GB fracture datafile
  
d = dir('*.def1.txt');
+
clear all
for i = 1:length(d)
+
 
 +
d = dir('data.Fe_110_sig3.txt');
 +
for i = 1%:length(d)
 
     fname = d(i).name;
 
     fname = d(i).name;
 
     A = importdata(fname);
 
     A = importdata(fname);
     strain = -A.data(:,1);
+
    %Define stress and strain
     stress = -A.data(:,2:4);
+
     strain = A.data(:,1);
      
+
     stress = A.data(:,2:7);
     plot(strain,stress(:,1),'-or','LineWidth',2,'MarkerEdgeColor','r',...
+
     %Plot data
         'MarkerFaceColor','r','MarkerSize',5),hold on
+
     plot(strain,stress(:,1),'-dr','LineWidth',2,'MarkerEdgeColor','r',...
 +
         'MarkerFaceColor','r','MarkerSize',10), hold on
 
     plot(strain,stress(:,2),'-ob','LineWidth',2,'MarkerEdgeColor','b',...
 
     plot(strain,stress(:,2),'-ob','LineWidth',2,'MarkerEdgeColor','b',...
         'MarkerFaceColor','b','MarkerSize',5),hold on
+
         'MarkerFaceColor','b','MarkerSize',5), hold on
 
     plot(strain,stress(:,3),'-og','LineWidth',2,'MarkerEdgeColor','g',...
 
     plot(strain,stress(:,3),'-og','LineWidth',2,'MarkerEdgeColor','g',...
         'MarkerFacecolor','g','MarkerSize',5),hold on
+
         'MarkerFaceColor','g','MarkerSize',5), hold on
 
     axis square
 
     axis square
     ylim([0 7])
+
     %ylim([0 10])
    xlim([0 0.2])
+
 
     set(gca,'LineWidth',2,'FontSize',24,'FontWeight','normal','FontName','Times')
 
     set(gca,'LineWidth',2,'FontSize',24,'FontWeight','normal','FontName','Times')
     set(get(gca,'xlabel'),'String','Strain','FontSize',32,'FontWeight','bold','FontName','Times')
+
     set(get(gca,'XLabel'),'String','Strain','FontSize',32,'FontWeight','bold',...
     set(get(gca,'ylabel'),'String','Stress (GPa)','FontSize',32','FontWeight','bold','FontName','Times')
+
        'FontName','Times')
 +
     set(get(gca,'YLabel'),'String','Stress (GPa)','FontSize',32,'FontWeight','bold',...
 +
        'FontName','Times')
 
     set(gcf,'Position',[1 1 round(1000) round(1000)])
 
     set(gcf,'Position',[1 1 round(1000) round(1000)])
   
+
 
     % Export the figure to a tif file
+
     %Export the figure to a tif file
     exportfig(gcf,strrep(fname,'.def1.txt','.tif'),'Format','tiff',...
+
     exportfig(gcf,strrep(fname,'_min.data','.tif'),'Format','tiff',...
 
         'Color','rgb','Resolution',300)
 
         'Color','rgb','Resolution',300)
 +
    close(1)
 
end
 
end
 
</pre>
 
</pre>
 
|}
 
|}
| [[image:Al comp sscurve.jpg|thumb|350px|Figure 1. Stress-strain curve for uniaxial compressive loading of single crystal aluminum in the <100> loading direction. ]]
+
| [[image:Fe 110 Sig3 sscurve.bmp|thumb|350px|Figure 1. Stress-strain curves for fracture of a <110> Σ3(-1 1 1) Fe symmetric tilt grain boundary. The x, y, and z principle stresses are plotted in red, blue, and green, respectively.]]
 
|}
 
|}
  
=== Deformation Movie ===
 
  
This assumes that you already have AtomEye and ImageJ downloaded. 
+
=== Visualization ===
* Visualize the dumpfile in AtomEye by typing the following command, "/A dump.tensile_0.cfg" (UNIX).
+
* Use the AtomEye options to select how you want to visualize deformation.  In this example, the centrosymmetry parameter was used to show only atoms in a non-centrosymmetric environment (see Fig. 2).
+
** Use Alt+0 to activate centrosymmetric (csym) view.
+
** Adjust threshold, or set of atoms to view, by using Shift+T. This will allow creation of a set for the current parameter (in this case, csym).
+
** Make atoms with values outside of the threshold invisible by using Ctrl+A.
+
* Press 'y' within AtomEye to produce an animation script. 
+
* The folder "Jpg" now contains snapshots of all dumpfiles.
+
* Open ImageJ
+
* Drag the folder Jpg into ImageJ
+
** Select "Convert to RGB" to keep the color from the AtomEye images.
+
** Choose "yes" to load a stack.
+
* Adjust the size as needed (Image/Adjust/Size)
+
* Adjust frame rate as desired (Image/Stacks/Animation Options)
+
* Save as Animated Gif file
+
  
 +
The simulation can be visualized in AtomEye. To do so, find the name of the first cfg file (Fe_110_sig3_224.cfg, in this case) that results from the simulation and type "~/A Fe_110_sig3_225.cfg" in a UNIX environment, where "~/A" is the location of the AtomEye file. Alt+0 will color the atoms according to pyy. Use insert and delete to scroll through the images to see the fracture.
 
{|
 
{|
| [[image:Al comp dislocation 4k.jpg|thumb|350px|Figure 2. Image of nucleated dislocation near peak stress.]]
+
| [[image:Fe 110 sig3 fracture.gif|thumb|350px|Figure 2. Movie showing the fracture of a Fe <110> sigma 3 symmetric tilt grain boundary. Atoms are colored by pyy.]]
| [[Image:Al comp 4k.gif|thumb|600px| Movie showing compressive deformation of single crystal aluminum loaded in the <100> direction at a strain rate of 10<sup>10</sup> s<sup>-1</sup> and a temperature of 300 K.  Only atoms in non-centrosymmetric environment are shown.]]
+
|}
+
 
+
== Cell Size Comparison ==
+
In order to test the difference that the number of atoms can have on a simulation, the above script was run with 32,000 and 108,000 atoms in addition 4,000 atoms. Editing the values (currently "10") in the following line in the input script will change the size of the simulation cell and the number of atoms used in the simulation. Values of "20" will result in 32,000 atoms, and values of "30" will result in 108,000 atoms.
+
 
+
{|border  ="0"
+
|<pre>
+
region whole block 0 10 0 10 0 10
+
</pre>
+
|}
+
 
+
 
+
Shown below are movies of the 4,000, 32,000,  and 108,000 atom simulations, which show only atoms in a non-centrosymmetric environment. As one might expect, more slip planes become visible as the atom count of the simulation increases.
+
 
+
{|
+
| [[Image:Al comp 4k.gif|thumb|600px| Movie showing compressive deformation of a 4,000 atom single crystal of aluminum loaded in the <100> direction. Only atoms in non-centrosymmetric environment are shown.]]
+
| [[Image:Al comp 32k.gif|thumb|600px| Movie showing compressive deformation of a 32,000 atom single crystal of aluminum loaded in the <100> direction. Only atoms in non-  centrosymmetric environment are shown.]]
+
| [[Image:Al comp 108k.gif|thumb|600px| Movie showing compressive deformation of a 108,000 atom single crystal of aluminum loaded in the <100> direction. Only atoms in non-centrosymmetric environment are shown.]]
+
|}
+
 
+
== Temperature Comparison ==
+
The temperature of the simulations also makes a difference in the outputs. To show this difference, the above simulations (previously at 300 K) were run at 10 K. In order to change the temperature of the simulation, three lines in the input script must be edited. Two lie under the 'Equilibraion' section while the third lies under 'Deformation.'
+
 
+
The velocity and fix commands shown below contain temperature data. The velocity command specifies the thermal velocity of the system while the fix command specifies the desired temperatures at the beginning and end of the simulation. In order to run the simulation at 10 K instead of 300 K, change the three '300' values to '10' in the velocity and fix command lines.
+
{|border  ="0"
+
|<pre>
+
# EQUILIBRATION
+
reset_timestep 0
+
timestep 0.001
+
velocity all create 300 12345 mom yes rot no
+
fix 1 all npt temp 300 300 1 iso 0 0 1 drag 1
+
</pre>
+
|}
+
 
+
The temperature values in the fix command under 'Deformation' also needs to be changed to '10' instead of '300.' The values are being changed again because between 'Equilibration' and 'Deformation' the fix ID 1 was unfixed. Here fix 1 is being redefined.
+
{|border  ="0"
+
|<pre>
+
# DEFORMATION
+
reset_timestep 0
+
 
+
fix 1 all npt temp 300 300 1 y 0 0 1 z 0 0 1 drag 1
+
</pre>
+
|}
+
 
+
All three simulation cell sizes were run at 10 K. Below are the movies from the simulations. Once again, only atoms in a non-centrosymmetric environment are viewable. The difference between the 300 K and 10 K simulations is that there is less non-centrosymmetry induced by thermal velocity. At 10 K, many fewer atoms are seen before slip occurs, and the slip planes are more cleary visible and absent of "noise" created by atoms that are non-centrosymmetric solely due to thermal activity.
+
 
+
{|
+
| [[Image:Al comp 10K 4k.gif|thumb|600px| Movie showing compressive deformation of a 4,000 atom single crystal of aluminum at 10 K loaded in the <100> direction. Only atoms in non-centrosymmetric environment are shown.]]
+
| [[Image:Al comp 10K 32k.gif|thumb|600px| Movie showing compressive deformation of a 32,000 atom single crystal of aluminum at 10 K loaded in the <100> direction. Only atoms in non-centrosymmetric environment are shown.]]
+
| [[Image:Al comp 10K 108k.gif|thumb|600px| Movie showing compressive deformation of a 108,000 atom single crystal of aluminum at 10 Kloaded in the <100> direction. Only atoms in non-centrosymmetric environment are shown.]]
+
 
|}
 
|}
  
Line 667: Line 259:
  
 
*[[MaterialModels:_Nanoscale | Nanoscale]]
 
*[[MaterialModels:_Nanoscale | Nanoscale]]
 +
*[[LAMMPS tutorials]]
  
 
== Acknowledgments ==
 
== Acknowledgments ==
Line 675: Line 268:
  
 
<references>
 
<references>
 +
 +
 +
[[Category: Script]]
 +
[[Category: Tutorial]]
 +
[[Category: LAMMPS]]
 +
[[Category: Input Deck]]

Latest revision as of 16:26, 16 April 2015

Contents

[edit] Questions / Comments

Please contact me if you have any questions or comments about this tutorial.

Email: Mark Tschopp, mark.tschopp@gatech.edu

[edit] Abstract

This example shows how to run an atomistic simulation of fracture of an iron symmetric tilt grain boundary. A parallel molecular dynamics code, LAMMPS[1], is used to calculate stresses at the grain boundary as the strain of the bicrystal is incrementally increased. Matlab is used to plot a stress-strain curve, and AtomEye[2]. is used to visualize the simulation.

Author(s): Mark A. Tschopp, Nathan R. Rhodes

Corresponding Author: Mark Tschopp

[edit] Input

[edit] Description of Simulation

This molecular dynamics simulation calculates the stress-strain relationship of an iron symmetric tilt grain boundary under fracture. The grain boundary structure used in this example is a <100> Σ5(210) symmetric tilt grain boundary. The potential used to generate the structure, the Hepburn and Ackland (2008) Fe-C interatomic potential[3], is also used in this script. The simulation cell is defined such that the bicrystal is pulled in the y-direction, or perpendicular to the boundary interface, to increase strain. The strain in increased for a specified number of times in a loop, and the stress is calculated at each point before the simulation loops. The stress and strain values are output to a separate file which can be imported in a graphing application for plotting.

[edit] Grain boundary structure file

The grain boundary structure that was generated prior to this example can be found here. Store the text in "Fe_110_sig3.txt" to use it.

[edit] LAMMPS input script

This input script was run using the November 2010 version of LAMMPS. Changes in some commands in more recent versions may require revision of the input script. This script runs the simulation with a previously generated grain boundary file, which is fed to the variable "datfile." The variable "nloop" defines how many times the strain will be increased and the number of points at which the stress is calculated. Other variables, such as the strain increment and the number of replications, can be changed in the input file. To run this script, store it in "in.gb_fracture.txt" and use "lmp_exe -var datfile Fe_110_sig3.txt -var nloop 100 < in.gb_fracture.txt " in a UNIX environment where "lmp_exe" refers to the LAMMPS executable.

Before strain is applied to the atoms, those atoms that are far from the grain boundary (defined by the variable deldist) are deleted to prevent unwanted transitions between periodic boundaries and to decrease simulation time. Then two smaller groups of atoms (width of groups defined by difference in variables deldist and fixdist) are fixed by setting their forces equal to zero. These same fixed groups are then incrementally strained until the grain boundary fractures.

############################################################################
# Interfacial Fracture
# Mark Tschopp, Nathan Rhodes 2011

# lmp_exe -var datfile Fe_110_sig3.txt -var nloop 100 < in.gb_fracture.txt

# Simulation deletes atoms outside of +/- deldist from GB and constrains and pulls
# atoms outside of +/- fixdist from GB to fracture the GB
############################################################################

#variable datfile index Fe_110_sig3.txt
variable strain equal 0.001
#variable nloop equal 100
variable repx equal 1
variable repz equal 1
variable strain2 equal "1+v_strain"
variable deldist equal 50
variable fixdist equal 45

######################################
# INITIALIZATION
units 		metal
dimension		3
boundary		p	p	p
atom_style		atomic
atom_modify map array

######################################
# SIMULATION CELL VARIABLES (in Angstroms)

read_data ${datfile}

#variable minlength equal 100
variable xlen equal lx
variable ylen equal ly
variable zlen equal lz

print "lx: ${xlen}"
print "ly: ${ylen}"
print "lz: ${zlen}"

# Replicate simulation cell in each direction
replicate ${repx} 1 ${repz}

######################################
# INTERATOMIC POTENTIAL
pair_style	eam/fs
pair_coeff	* * Fe-C_Hepburn_Ackland.eam.fs Fe C

# Compute stress information for Atomeye visualization
compute stress all stress/atom
compute stress1 all reduce sum c_stress[1]
compute stress2 all reduce sum c_stress[2]
compute stress3 all reduce sum c_stress[3]
compute stress4 all reduce sum c_stress[4]
compute stress5 all reduce sum c_stress[5]
compute stress6 all reduce sum c_stress[6]
##########################################
# Minimize first
reset_timestep 0
thermo		10
thermo_style custom step lx ly lz press pxx pyy pzz pe c_stress1 c_stress2 c_stress3 c_stress4 c_stress5 c_stress6
min_style cg
fix 1 all box/relax x 0.0 z 0.0 couple none vmax 0.001 
minimize 1.0e-25 1.0e-25 1000 10000
unfix 1

# Compute distance for each side of the grain boundary to displace
variable ly1 equal ly
variable ly0 equal ${ly1}
variable lydelta equal "v_strain*v_ly0/2"

# Setup file output (time in ps, pressure in GPa)
variable p1 equal "(ly-v_ly0)/v_ly0"
variable p2 equal "-pxx/10000"
variable p3 equal "-pyy/10000"
variable p4 equal "-pzz/10000"
variable p5 equal "-pxy/10000"
variable p6 equal "-pxz/10000"
variable p7 equal "-pyz/10000"
variable p8 equal "pe"

# Output stress and strain information to datafile for Matlab post-processing
fix equil1 all print 1 "${p1} ${p2} ${p3} ${p4} ${p5} ${p6} ${p7} ${p8}" file data.${datfile}.txt screen no
fix 1 all nve
run 1
unfix 1
variable pressf1 equal pyy
variable pressf equal ${pressf1}

##########################################
# Create cfg files with stress in y direction for AtomEye viewing

dump 1 all cfg 500 ${datfile}_*.cfg id type xs ys zs c_stress[2]
##########################################
# CREATE REGIONS FOR BOUNDARY CONDITIONS

# Delete groups of atoms far from boundary
region rlow block 0 200 -200 -${deldist} 0 200 units box
region rhigh block 0 200 ${deldist} 200 0 200 units box
group glow region rlow
group ghigh region rhigh

delete_atoms group glow
delete_atoms group ghigh

# Create groups to fix and displace
region rgblow block 0 200 -200 -${fixdist} 0 200 units box
region rgbhigh block 0 200 ${fixdist} 200 0 200 units box
group gbhigh region rgbhigh
group gblow region rgblow

# Put fixed boundary condition on edge atoms by setting forces to zero
fix 2 gbhigh setforce 0 0 0
fix 3 gblow setforce 0 0 0
##########################################
# MS Deformation loop

variable a loop ${nloop}
label loop

# Increase box bound and minimize again
#reset_timestep 0

displace_box gblow y delta -${lydelta} 0 units box
displace_box gbhigh y delta 0 ${lydelta} units box

minimize 1.0e-25 1.0e-25 1000 10000

run 1

print "Pressf: ${pressf}"
variable pdiff equal "pyy - v_pressf"
print "Pressf: ${pressf}"
print "Pdiff: ${pdiff}"
#if ${pdiff} > 10000 then "exit"
variable pressf1 equal pyy
variable pressf equal ${pressf1}

next a
jump in.gb_fracture.txt loop 

unfix equil1

######################################
# SIMULATION DONE
print "All done"

[edit] Output

[edit] LAMMPS datafile

The following file, named "data.Fe_110_sig3.txt" should have been created in addition to the log.lammps file. This file stores strain information in the first column, stress tensor information in the second through seventh columns, and stores the total potential energy of the cell in the eight column. The simulation should have looped 100 times (as per the "nloop" variable), so there should be 100 entries (which end at a strain of 0.1) plus the initial entry of stress and strain at zero.

# Fix print output for fix equil1
0 -0.0001566341885 -0.04277905345 -0.0001735704412 -1.050347047e-06 -4.979630806e-16 -1.182662217e-15 -2403.177532
0.001 0.1410350669 0.2358351934 0.1410320946 -0.0008483136938 2.157375957e-16 5.10156062e-16 -953.8313633
0.002 0.2093101255 0.4502201532 0.2093077625 -0.0008559731915 8.7476703e-16 4.741491304e-16 -953.8066728
0.003 0.2773789426 0.6636768305 0.2773773176 -0.0008616327062 6.889837825e-16 -3.49557936e-16 -953.7648879
0.004 0.3452439027 0.8759462057 0.345242809 -0.00086663188 1.290557646e-16 1.847269505e-16 -953.7061129
0.005 0.4128989894 1.086758848 0.412898328 -0.0008712926385 2.527957377e-18 4.348139418e-16 -953.6304752
...

[edit] Post-Processing

[edit] Stress-Strain Plot

The stress-strain curve in Figure 1 can be generated using the following MATLAB script. The "exportfig" command saves the plot to a tiff file, but the plot can also be saved as a Mathcad figure once it appears. The three principle stresses are plotted: pxx in red, pyy in blue, and pzz in green. The shear stresses (not plotted) are stored in the fourth, fifth, and sixth columns of the stress variable.

%% Plot stress-strain curve from single GB fracture datafile

clear all

d = dir('data.Fe_110_sig3.txt');
for i = 1%:length(d)
    fname = d(i).name;
    A = importdata(fname);
    %Define stress and strain
    strain = A.data(:,1);
    stress = A.data(:,2:7);
    %Plot data
    plot(strain,stress(:,1),'-dr','LineWidth',2,'MarkerEdgeColor','r',...
        'MarkerFaceColor','r','MarkerSize',10), hold on
    plot(strain,stress(:,2),'-ob','LineWidth',2,'MarkerEdgeColor','b',...
        'MarkerFaceColor','b','MarkerSize',5), hold on
    plot(strain,stress(:,3),'-og','LineWidth',2,'MarkerEdgeColor','g',...
        'MarkerFaceColor','g','MarkerSize',5), hold on
    axis square
    %ylim([0 10])
    set(gca,'LineWidth',2,'FontSize',24,'FontWeight','normal','FontName','Times')
    set(get(gca,'XLabel'),'String','Strain','FontSize',32,'FontWeight','bold',...
        'FontName','Times')
    set(get(gca,'YLabel'),'String','Stress (GPa)','FontSize',32,'FontWeight','bold',...
        'FontName','Times')
    set(gcf,'Position',[1 1 round(1000) round(1000)])

    %Export the figure to a tif file
    exportfig(gcf,strrep(fname,'_min.data','.tif'),'Format','tiff',...
        'Color','rgb','Resolution',300)
    close(1)
end
Figure 1. Stress-strain curves for fracture of a <110> Σ3(-1 1 1) Fe symmetric tilt grain boundary. The x, y, and z principle stresses are plotted in red, blue, and green, respectively.


[edit] Visualization

The simulation can be visualized in AtomEye. To do so, find the name of the first cfg file (Fe_110_sig3_224.cfg, in this case) that results from the simulation and type "~/A Fe_110_sig3_225.cfg" in a UNIX environment, where "~/A" is the location of the AtomEye file. Alt+0 will color the atoms according to pyy. Use insert and delete to scroll through the images to see the fracture.

Figure 2. Movie showing the fracture of a Fe <110> sigma 3 symmetric tilt grain boundary. Atoms are colored by pyy.

[edit] Go Back

[edit] Acknowledgments

The authors would like to acknowledge funding for this work through the Department of Energy.

[edit] References

  1. S. Plimpton, "Fast Parallel Algorithms for Short-Range Molecular Dynamics," J. Comp. Phys., 117, 1-19 (1995).
  2. J. Li, "AtomEye: an efficient atomistic configuration viewer," Modelling Simul. Mater. Sci. Eng. 11 (2003) 173.
  3. D.J. Hepburn and G.J. Ackland, "Metallic-covalent interatomic potential for carbon in iron," Phys. Rev. B 78, 165115 (2008).
Personal tools
Namespaces

Variants
Actions
home
Materials
Material Models
Design
Resources
Projects
Education
Toolbox