Shuffle-Glide dislocation MD and NEB: Difference between revisions

From Micro and Nano Mechanics Group
Jump to navigation Jump to search
No edit summary
 
(14 intermediate revisions by the same user not shown)
Line 5: Line 5:
<P ALIGN="CENTER"><STRONG>Xiaohan Zhang and Wei Cai</STRONG></P>
<P ALIGN="CENTER"><STRONG>Xiaohan Zhang and Wei Cai</STRONG></P>
</DIV>
</DIV>
<P ALIGN="CENTER"> Created Mar, 2017, Last modified Mar, 2017</P>
<P ALIGN="CENTER"> Created Mar, 2018, Last modified Mar, 2018</P>
<P>
<P>


Line 85: Line 85:
Take mc2 as an example, one module load the following:
Take mc2 as an example, one module load the following:


::> module load mvapich2/2.0rc1-intel-14, intel/14
::> module load mvapich2/2.0rc1-intel-14, intel/14
::> cd MD++.git (svn)
::> make sworig build=R SYS=mc2_mpich
::> make sw build=R SYS=mc2_mpich
::> make meam-lammps build=R SYS=mc2
::> bin1/sworig_mc2_mpich scripts/work/sw_meam_calibrations/disl_nuc_hetero.tcl 1 0 1000


(0 and 1000 are useless, but need to be there otherwise the script will complain missing parameters)
::> cd MD++.git (svn)
::> make sworig build=R SYS=mc2_mpich
::> make sw build=R SYS=mc2_mpich
::> make meam-lammps build=R SYS=mc2
::> bin1/sworig_mc2_mpich scripts/work/sw_meam_calibrations/disl_nuc_hetero.tcl 1 0 1000 (0 and 1000 are useless, but need to be there otherwise the script will complain missing parameters)
::> bin1/sw_mc2_mpich scripts/work/sw_meam_calibrations/disl_nuc_hetero.tcl 1 0 1000
::> meam-lammps_mc2 scripts/work/sw_meam_calibrations/disl_nuc_hetero.tcl 1 0 1000


::> bin1/sw_mc2_mpich scripts/work/sw_meam_calibrations/disl_nuc_hetero.tcl 1 0 1000
change in the script the configuration to read in, choosing from runs/sw_meam_calibrations/bulk_sw.cn, bulk_meam.cn, SiGeHole_meam.cn, SiGeHole_sw.cn. From MD++, the numbers should be exactly the following:
::> meam-lammps_mc2 scripts/work/sw_meam_calibrations/disl_nuc_hetero.tcl 1 0 1000


change in the script the configuration to read in, choosing from runs/sw_meam_calibrations/bulk_sw.cn, SiGeHole_sw.cn. (There are also bulk_meam.cn, SiGeHole_meam.cn generated from disl_nuc_hetero.tcl with meam-lammps)
MEAM + bulk_meam.cn : -1.024081.9
MEAM + SiGeHole_sw.cn: -9.97015.8


From MD++, the numbers should be exactly the following:
SWorig + bulk_sw.cn : -9.58832.6
SWorig + SiGeHole_sw.cn : -9.32569.7


SW + bulk_sw.cn : -1.024081.9
MEAM + bulk_sw.cn : -1.024081.9
SW + SiGeHole_sw.cn : -9.96031.739
MEAM + SiGeHole_sw.cn: -9.97015.8
SWorig + bulk_sw.cn : -9.58832.6
SWorig + SiGeHole_sw.cn : -9.32569.7
SW + bulk_sw.cn : -1.024081.9
SW + SiGeHole_sw.cn : -9.96031.739




From lammps,
From lammps,


MEAM + bulk_sw.cn : -1024081.9
MEAM + bulk_sw.cn : -1024081.9
MEAM + SiGeHole_sw.cn: -997015.9
MEAM + SiGeHole_sw.cn: -997015.9
SWorig + bulk_sw.cn : -958832.17
SWorig + SiGeHole_sw.cn : -932569.26
SW + bulk_sw.cn : -1024081.9
SW + SiGeHole_sw.cn : -996031.74


==NEB calculation work flow==
SWorig + bulk_sw.cn : -958832.17
SWorig + SiGeHole_sw.cn : -932569.26


SW + bulk_sw.cn : -1024081.9
::> cd MD++.git
::> module list
SW + SiGeHole_sw.cn : -996031.74
Currently Loaded Modulefiles:
1) null 2) intel/14 3) mvapich2/2.0rc1-intel-14
::> make sworig build=R SYS=mc2_mpich


::> bin1/sworig_mc2_mpich scripts/work/he-si-tf-pit-neb/he-si-tf-pit-special-3-sworig/disl_nuc_hetero.tcl 0 0 001 1
==Cross Potential between Ge and Si==
::> bin1/sworig_mc2_mpich scripts/work/he-si-tf-pit-neb/he-si-tf-pit-special-3-sworig/disl_nuc_hetero.tcl 1 0.0520 001 1
::> bin1/sworig_mc2_mpich scripts/work/he-si-tf-pit-neb/he-si-tf-pit-special-3-sworig/disl_nuc_hetero.tcl 4 0.0520 001 1


The first line executes a thread that
The parameters for the cross potential are specified in '''SiGe.meam''' file. The lines relevant for the cross potential (i.e. between species 1 and 2) are shown below. The values correspond to Table 1 of G. Grochola et al. / Chemical Physics Letters 493 (2010) 57–60 59.
1) creates a thin film of (001) free surface
2) reconstruct surface atoms by perturb the atom positions and forming dimers
3) apply along [110] direction a compression strain by the increments of 0.001 from 0 to 0.06, i.e., 6% compressive strain.


The second line reads in initial config of (3) from above and create a shuffle-glide dislocation complex beneath top free surface, which is then relaxed for several steps. The output configuration can be examined by importing w-loop-compression-surf001-eps0.0520.cfg to ovito/DXA.
re(1,2) = 2.67 (<math>r_e</math>)
delta(1,2) = 0.071 (related to <math>E_c</math>, see below)
lattce(1,2) = b1 (<math>B</math>)
lattce(1,2) = b1 (<math>Rcut</math>)
lattce(1,2) = b1 (<math>C_{\max}</math>)
lattce(1,2) = b1 (<math>C_{\min}</math>)
d = 0


The third line needs to be launched within pbs file `cause it execute sworig_mc2_mpich in MPI mode, calling stringrelax_parallel (). The energy barrier curve can be visualized by using octave/matlab such as,
The values for <math>E_c ({\rm AuGe}) = 3.189</math>.
This value is related to delta(1,2) through


===Test case 2: Energy barrier with SW for strain 5.2%===
<math>E_c ({\rm AuGe}) = 0.5*[ E_c ({\rm Au}) + E_c({\rm Ge}) ] - {\rm delta}(1,2) = 0.5 * (3.93 + 3.85) - 0.071 = 3.819</math>.


::> load runs/he-si-tf-pit-neb/he-si-tf-pit-special-3-sworig/w-disl-nuc-hetero-001-0.0520.24/stringeng.out
<math>\rho_0^{\rm Ge} / \rho_0^{\rm Au}</math> = 1.5228 because of the <math>\rho_0^{\rm Ge}</math> and <math>\rho_0^{\rm Au}</math> values specified above. This value of <math>\rho_0^{\rm Ge} / \rho_0^{\rm Au}</math> leads to the following impurity formation energies
::> plot(stringeng(1:100:end, 3:5:end)', '*')


Apply this work flow for different strain, one gets the energy barrier as a function of applied strain.
<math>E_1 = 0.331 </math> eV Ge impurity in FCC Au (MEAM)
<math>E_2 = 1.387 </math> eV Au impurity in DC Ge (MEAM)


Note that, dislocation loop size of status == 1 can be adjusted manually in the script by specifying w in make_glide_dislocation_loop_1, for example, minor adjustment is needed to get a smooth energy barrier - strain curve.
These values are to be compared with VASP predictions


<math>E_1 = 0.331 </math> eV Ge impurity in FCC Au (VASP/LDA/US)
<math>E_2 = 1.130 </math> eV Au impurity in DC Ge (VASP/LDA/US)


==Finite temperature MD with Lammps==
Cmax = 2.8 is the default value.


We use lammps-30Jul16 version.
==Benchmark in MD++==


::> cd lammps-30Jul16/lib/meam
Compile the code using the following command on mc2.
::> make -f Makefile.gfortran (for meam)
::> cd lammps-30Jul16/src
::> make yes-manybody
::> make yes-meam
::> make mpi


make meam-lammps build=R SYS=mc2_mpich


First, one estimates thermal expansion ratios for a bulk system of si using MEAM and sworig.
Use the following command to compute the melting point of pure Si, Ge, and Si0.5Ge0.5.


::> cd MD++.git/
bin/meam-lammps_gpp scripts/work/si_au/si_au_benchmark.tcl 1
::> bin1/sworig_mc2 scripts/work/he-si-tf-pit-md/thermal_init_config/therm_exp_estimates/bulk_generator.tcl 0
::> cd /home/xzhang11/Planet/Libs/MD++.git/scripts/work/he-si-tf-pit-
md/thermal_init_config/therm_exp_estimates/thermal_equilibrate_load_hold_si_800K
::> lmp_mpi < thermal_equilibrate.sw (meam)


From initial and final equilibrated states, one gets thermal expansion. And one records the coefficents in
The results are
scripts/work/he-si-tf-pit-md/thermal_init_config/therm_initconfig_generator.tcl


::> sw_mc2 scripts/work/he-si-tf-pit-md/thermal_init_config/therm_initconfig_generator.tcl 0 1 1000
a0 = 4.07300759775 Angstrom
Ecoh = -3.92996804082 eV


To run the lammps scripts, first create surface pit structure with MD++ as follows,
Use the following command to compute the equilibrium lattice constant and cohesive energy of pure Si (DC).


::> cd MD++.git/scripts/work/he-si-tf-pit-md/he-si-pit-800K-54-thermal-relax-nvt
bin/meam-lammps_gpp scripts/work/si_au/si_au_benchmark.tcl 0
::> mpirun -np $ncpu lammps-30Jul16/src/lmp_mpi < input.meam


===Test case 3: Nucleation event with SW for strain 5.2%===
The results are
a0 = 5.43100051581 Angstrom
Ecoh = -4.63000000205 eV


::> load runs/he-si-tf-pit-neb/he-si-tf-pit-special-3-sworig/w-disl-nuc-hetero-001-0.0520.24/stringeng.out
::> plot(stringeng(1:100:end, 3:5:end)', '*')


Apply this work flow for different strain, one gets the energy barrier as a function of applied strain.
Use the following command to compute the equilibrium lattice constant and cohesive energy of Au-Si (B1).

bin/meam-lammps_gpp scripts/work/si_au/si_au_benchmark.tcl 2

The results are
a0 = 5.4 Angstrom
Ecoh = -4.155000000083061 eV

===melting point===

Use the following command to compute the impurity of a Au atom in Si DC lattice.

bin/meam-lammps_gpp scripts/work/si_au/si_au_benchmark.tcl 4

The results depend slightly on the cell size
cell size, Eimp(eV)
3x3x3 3.914
4x4x4 3.968
5x5x5 3.987
10x10x10 4.005
20x20x20 4.008

The result in the paper (S. Ryu and W.Cai JPCM 22 055401 (2010), Table 2,
is <math>E_2 = 3.968</math> (eV) for a Au atom in Si DC crystal.
So it seems that the result in JPCM (2010) corresponds to the 4x4x4 cell here.


Use the following command to compute the impurity of a Si atom in Au fcc lattice.

bin/meam-lammps_gpp scripts/work/si_au/si_au_benchmark.tcl 3

cell size, Eimp(eV)
2x2x2 0.639
3x3x3 0.660
4x4x4 0.665
5x5x5 0.667
10x10x10 0.669
20x20x20 0.669

The result in the paper (S. Ryu and W.Cai JPCM 22 055401 (2010), Table 2,
is <math>E_1 = 0.636</math> (eV) for a Si atom in Au FCC crystal.
So it seems that for a Si in Au FCC crystal, the predicted results here using
the 2x2x2 cell corresponds to the value in JPCM (2010).

===phase diagram===

Use the following command to obtain the phase diagram of SiGe.

bin/meam-lammps_gpp scripts/work/si_au/si_au_benchmark.tcl 4

The results depend slightly on the cell size
cell size, Eimp(eV)
3x3x3 3.914
4x4x4 3.968
5x5x5 3.987
10x10x10 4.005
20x20x20 4.008

The result in the paper (S. Ryu and W.Cai JPCM 22 055401 (2010), Table 2,
is <math>E_2 = 3.968</math> (eV) for a Au atom in Si DC crystal.
So it seems that the result in JPCM (2010) corresponds to the 4x4x4 cell here.


Use the following command to compute the impurity of a Si atom in Au fcc lattice.

bin/meam-lammps_gpp scripts/work/si_au/si_au_benchmark.tcl 3

cell size, Eimp(eV)
2x2x2 0.639
3x3x3 0.660
4x4x4 0.665
5x5x5 0.667
10x10x10 0.669
20x20x20 0.669

The result in the paper (S. Ryu and W.Cai JPCM 22 055401 (2010), Table 2,
is <math>E_1 = 0.636</math> (eV) for a Si atom in Au FCC crystal.
So it seems that for a Si in Au FCC crystal, the predicted results here using
the 2x2x2 cell corresponds to the value in JPCM (2010).

Latest revision as of 18:10, 13 March 2018

Shuffle Glide Dislocation Complex: NEB and MD

Xiaohan Zhang and Wei Cai

Created Mar, 2018, Last modified Mar, 2018

This tutorial corresponds to paper ``Shuffle-Glide Dislocation Complex Nucleation in Silicon Thin Film. It explains how to calibrate and specify SW and MEAM-lammps potential parameters in both MD++ and LAMMPs. It explains how to set up and run NEB calculations to measure the energy barrier of a shuffle-glide dislocation complex nucleated in a thin film with a surface pit. Finite temperature MD simulations are performed in Lammps to capture nucleation events as validation to energy barrier calculations.


Potential for Pure Elements

SW Potential for Si

We calibrate both SW (1985) and SW (1992) potentials in both MD++ and Lammps. The modified version of SW fits to cohesive energy. Their parameters are listed as follows:

MD++: /* original Si version PRB 31, 5262 (1985) */

      aa=15.27991323; bb=11.60319228; plam=45.51575;
      pgam=2.51412; acut=3.77118; pss=2.0951; rho=4.0;

/* modified Si parameters PRB 46, 2250 (1992) */

      aa=16.31972277; bb=11.60319228; plam=48.61499998;
      pgam=2.51412;  acut=3.77118; pss=2.0951; rho=4.;

Lammps:

/* sw, Stillinger and Weber, Phys. Rev. B, v. 31, p. 5262, (1985) */

        Si Si Si 2.1674166667   2.0951  1.80  21.0  1.20  -0.333333333
        7.049827  0.602225  4.0  0.0 0.0

/* PRB 46, 2250 (1992) */

        Si Si Si 2.1683  2.0951  1.80  22.4207904718  1.20  -0.333333333333
        7.5265059125  0.6022245574  4.0  0.0 0.0

MEAM Potential for Si

We use the 'Siz' potential as those used in Kang, et al "Size and Temperature Effects on Brittle and Ductile Fracture of Silicon Nanowires", International Journal of Plasticity, 26, 1387 (2010" and "Brittle and Ductile Fracture of Semiconductor Nanowires – Molecular Dynamics Simulations", Philosophical Magazine, 87, 2169, (2007)."


MD++:

The main parameters in the MEAM potential is specified in the meamf file. (In MD++, this file is in the potentials/MEAMDATA folder.) The lines correspond to 'Siz' is given below.

      'Siz'        'dia'   4.      14           28.086
      4.87        4.4     5.5     5.5          5.5   5.431   4.63    1.
      1.0         3.13            4.47         -1.80         1.600   0

corresponding to the data format of:

     elt        lat     z       ielement     atwt
     alpha      b0      b1      b2           b3    alat    esub    asub
     t0         t1              t2           t3            rozero  ibar

Note that the nearest neighbor distance = alat for the diamond cubic structure.

= rozero will be important only for cross-potential. And note that this is the only different from Si4 line.

ibar is a setting used in the equation of state (EOS), which is explained in SiGe potential tutorial (http://micro.stanford.edu/wiki/MEAM_Potential_for_Si-Ge)


Lammps:

     'Siz'        'dia'   4.      14           28.086
     4.87        4.4     5.5     5.5          5.5   5.431   4.63    1.
     1.0         3.13            4.47         -1.80         1.600   0

corresponds to the data format of

     DATE: 2012-06-29 DATE: 2007-06-11 CONTRIBUTOR: 
     Greg Wagner, gjwagne@sandia.gov 
     CITATION: Baskes, Phys Rev B, 46, 2727-2742 (1992)
     meam data from vax files fcc,bcc,dia    11/4/92
     elt        lat     z       ielement     atwt
     alpha      b0      b1      b2           b3    alat    esub    asub
     t0         t1              t2           t3            rozero  ibar

Test case 1: Potential Calibration for SW and MEAM

This test case is developed in MD++, but also use lammps executable, to evaluate potential energy of a bulk system and a surface pit structure with both SW (1985, 1992) and MEAM potential. To run the test case, follow the steps below,

Take mc2 as an example, one module load the following:

      ::> module load mvapich2/2.0rc1-intel-14, intel/14
      ::> cd MD++.git (svn)
      ::> make sworig build=R SYS=mc2_mpich
      ::> make sw build=R SYS=mc2_mpich
      ::> make meam-lammps build=R SYS=mc2
      ::> bin1/sworig_mc2_mpich scripts/work/sw_meam_calibrations/disl_nuc_hetero.tcl  1 0 1000   
(0 and 1000 are useless, but need to be there otherwise the script will complain missing parameters)
      ::> bin1/sw_mc2_mpich scripts/work/sw_meam_calibrations/disl_nuc_hetero.tcl  1 0 1000  
      ::> meam-lammps_mc2 scripts/work/sw_meam_calibrations/disl_nuc_hetero.tcl 1 0 1000

change in the script the configuration to read in, choosing from runs/sw_meam_calibrations/bulk_sw.cn, SiGeHole_sw.cn. (There are also bulk_meam.cn, SiGeHole_meam.cn generated from disl_nuc_hetero.tcl with meam-lammps)

From MD++, the numbers should be exactly the following:

      MEAM + bulk_sw.cn :            -1.024081.9
      MEAM + SiGeHole_sw.cn:      -9.97015.8
      SWorig + bulk_sw.cn :           -9.58832.6
      SWorig + SiGeHole_sw.cn :  -9.32569.7
      SW       +  bulk_sw.cn :         -1.024081.9
      SW       + SiGeHole_sw.cn :  -9.96031.739


From lammps,

      MEAM + bulk_sw.cn :              -1024081.9
      MEAM + SiGeHole_sw.cn:       -997015.9
      SWorig + bulk_sw.cn :              -958832.17 
      SWorig + SiGeHole_sw.cn :      -932569.26
      SW       +  bulk_sw.cn :              -1024081.9
      SW       + SiGeHole_sw.cn :      -996031.74

NEB calculation work flow

     ::> cd MD++.git
     ::> module list
     Currently Loaded Modulefiles:
     1) null                       2) intel/14                   3) mvapich2/2.0rc1-intel-14
     ::> make sworig build=R SYS=mc2_mpich
     ::> bin1/sworig_mc2_mpich scripts/work/he-si-tf-pit-neb/he-si-tf-pit-special-3-sworig/disl_nuc_hetero.tcl 0 0 001 1
     ::> bin1/sworig_mc2_mpich scripts/work/he-si-tf-pit-neb/he-si-tf-pit-special-3-sworig/disl_nuc_hetero.tcl 1 0.0520 001 1
     ::> bin1/sworig_mc2_mpich scripts/work/he-si-tf-pit-neb/he-si-tf-pit-special-3-sworig/disl_nuc_hetero.tcl 4 0.0520 001 1

The first line executes a thread that 1) creates a thin film of (001) free surface 2) reconstruct surface atoms by perturb the atom positions and forming dimers 3) apply along [110] direction a compression strain by the increments of 0.001 from 0 to 0.06, i.e., 6% compressive strain.

The second line reads in initial config of (3) from above and create a shuffle-glide dislocation complex beneath top free surface, which is then relaxed for several steps. The output configuration can be examined by importing w-loop-compression-surf001-eps0.0520.cfg to ovito/DXA.

The third line needs to be launched within pbs file `cause it execute sworig_mc2_mpich in MPI mode, calling stringrelax_parallel (). The energy barrier curve can be visualized by using octave/matlab such as,

Test case 2: Energy barrier with SW for strain 5.2%

      ::> load runs/he-si-tf-pit-neb/he-si-tf-pit-special-3-sworig/w-disl-nuc-hetero-001-0.0520.24/stringeng.out
      ::> plot(stringeng(1:100:end, 3:5:end)', '*')

Apply this work flow for different strain, one gets the energy barrier as a function of applied strain.

Note that, dislocation loop size of status == 1 can be adjusted manually in the script by specifying w in make_glide_dislocation_loop_1, for example, minor adjustment is needed to get a smooth energy barrier - strain curve.


Finite temperature MD with Lammps

We use lammps-30Jul16 version.

    ::> cd lammps-30Jul16/lib/meam
    ::> make -f Makefile.gfortran (for meam)
    ::> cd lammps-30Jul16/src
    ::> make yes-manybody
    ::> make yes-meam
    ::> make mpi 


First, one estimates thermal expansion ratios for a bulk system of si using MEAM and sworig.

    ::> cd MD++.git/
    ::> bin1/sworig_mc2 scripts/work/he-si-tf-pit-md/thermal_init_config/therm_exp_estimates/bulk_generator.tcl 0
    ::> cd /home/xzhang11/Planet/Libs/MD++.git/scripts/work/he-si-tf-pit- 
         md/thermal_init_config/therm_exp_estimates/thermal_equilibrate_load_hold_si_800K
    ::> lmp_mpi < thermal_equilibrate.sw (meam)

From initial and final equilibrated states, one gets thermal expansion. And one records the coefficents in

        scripts/work/he-si-tf-pit-md/thermal_init_config/therm_initconfig_generator.tcl
    ::> sw_mc2  scripts/work/he-si-tf-pit-md/thermal_init_config/therm_initconfig_generator.tcl 0 1 1000 

To run the lammps scripts, first create surface pit structure with MD++ as follows,

    ::> cd MD++.git/scripts/work/he-si-tf-pit-md/he-si-pit-800K-54-thermal-relax-nvt
    ::> mpirun -np $ncpu lammps-30Jul16/src/lmp_mpi < input.meam

Test case 3: Nucleation event with SW for strain 5.2%

      ::> load runs/he-si-tf-pit-neb/he-si-tf-pit-special-3-sworig/w-disl-nuc-hetero-001-0.0520.24/stringeng.out
      ::> plot(stringeng(1:100:end, 3:5:end)', '*')

Apply this work flow for different strain, one gets the energy barrier as a function of applied strain.