[lammps-users] Relaxation

Hej,

I try to simulate a WC/WC Sigma2 twist grain boundary using an adapted
Tersoff potential.
Bulk properties and surface energies are in perfect agreement with
literature, thats why I think that the potential is correct.
Once I introduce the grain boundary which corresponds to an edge and a
screw dislocation and I try to relax (via cg and I tried sd as well) the
system, it does not move into the known (from VASP calculations and HREM
images) ground state.

In the code below I simplified the problem so that there is just an edge
dislocation intodruced. Atoms move during minimization, but it seems to me
that I just find local minima but not the global one. I already tried to
"disturb" them in order to be able to further minimize, but that did not
work, as well.

I tried as well to freeze parts of the system after the first minimization
and just minimized the interface area for a second time as it was
recommended in previous mails, but that did not help either.

I am grateful for any ideas.

Thank you!

Melanie

#! /usr/bin/python

from string import atoi
from array import array
import os
import glob

lammps = '/c3se/users/syha/LAMMPS/lmp_modified'

eps = [1.0]
a0 = 2.906
c0 = 2.837

for i in eps:

        a = a0
        c = i*c0

        # Write input file
        fileName = 'WC.input'
        f = file(fileName, 'w')

        f.write('# W lattice with Tersoff\n')
        f.write('units metal\n')
        f.write('atom_style atomic\n')
        f.write('boundary p f p\n')
        f.write('lattice custom %1.8f a1 1.0 0.0 0.0 a2 0.5 0.866025404
0.0 a3
0.0 0.0 1\.8f basis 0\.0 0\.0 0\.0 basis 0\.3333333333 0\.3333333333 0\.5\\n'
(a, c/a))
        f.write('region box block 0 27.333 0 60 0 6\n')
        f.write('create_box 2 box\n')
        f.write('region first block 0 27.333 10 30.4 0 6\n')
        f.write('region second block 0 27.333 30.9 50.4 0 6\n')
        f.write('region 3 block 0 27.33 30.2 31.1 0 6\n')
        f.write('create_atoms 2 region first basis 1 1 basis 2 2\n')
               f.write('lattice none\n')
        a = 2.837
        c = 2.837
        f.write('lattice custom %1.8f a1 1.0 0.0 0.0 a2 0.5 0.8870884 0.0
a3 0.0
0.0 1\.8f basis 0\.0 0\.0 0\.0 basis 0\.3333333333 0\.3333333333 0\.5\\n' (a,
c/a))
        f.write('create_atoms 2 region second basis 1 1 basis 2 2\n')
        f.write('mass 1 183.85\n')
        f.write('mass 2 12.01\n')
        f.write('group mydump region 3\n')
# f.write('group rest subtract all mydump\n')
        f.write('neighbor 0.1 bin\n')
        f.write('neigh_modify delay 4 check no\n')
        f.write('\n')
        f.write('velocity all create 0.0 87287 loop geom\n')
        f.write('\n')
        f.write('pair_style tersoff\n')
        f.write('pair_coeff * * WC.tersoff W C\n')
        f.write('\n')
        f.write('thermo 10\n')
        f.write('dump 1 all atom 10 tmp.dump\n')
        f.write('dump 2 mydump atom 10 my.dump\n')
        f.write('dump 3 mydump custom 10 myforce.dump tag type
xs ys zs
fx fy fz\n')
        f.write('\n')
        f.write('fix 1 all nve\n')
        f.write('timestep 0.005\n')
        f.write('run 0\n')
        f.write('minimize 10e-7 1000 10000\n')
        f.write('\n')
        f.close()

        os.system('mpiexec --comm=pmi '+lammps+' < '+fileName)
        os.system('grep -A 1 \"Step Temp\" log.lammps | tail -1 >>
Results.txt')

# End of script

Atoms move during minimization, but it seems to me
that I just find local minima but not the global one.

That's all a CG or steepest-descent minimizer does: find
the local minimum. If you want something more sophisticated,
like simulated annealing or a global search from different
starting points, you'll have to build such geometries and run
them thru LAMMPS.

Steve

One other option in LAMMPS is to run dynamics with
a fix viscous command in place. This will drain kinetic
energy out of the system (at a rate you choose), so
you might be able to find a better non-local minimum
that way.

Steve