Вы находитесь на странице: 1из 23

Санкт-Петербургский национальный исследовательский университет

информационных технологий, механики и оптики


Факультет лазерной и световой инженерии
Кафедра современных функциональных материалов

Методическое указание по выполнению лабораторных работ

Тема: «Моделирование точечных дефектов в кристаллах


с разной симметрией методом молекулярной динамики»

1
Содержание

1 КРАТКОЕ ОПИСАНИЕ РАБОТЫ ..................................................................... 3

2 ЦЕЛЬ РАБОТЫ .................................................................................................... 3

3 ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ .............................................................. 4

3.1 Блок начальных параметров ........................................................................ 4

3.2 Создание атомов ............................................................................................ 5

3.3 Определение межатомного потенциала взаимодействия и вычисляемых


параметров ........................................................................................................... 7

3.4 Минимизация энергии .................................................................................. 9

3.5 Зарождение вакансии или междоузельного атома .................................. 11

3.6 Минимизация энергии после зарождения вакансии................................ 12

3.7 Расчет энергии формирования и вывод результата ................................. 12

3.8 Запуск скрипта в LAMMPS ........................................................................ 13

4 ВИЗУАЛИЗАЦИЯ РЕШЕНИЯ ......................................................................... 15

5 ТРЕБОВАНИЯ К ОТЧЕТУ ............................................................................... 18

6 ИСПОЛЬЗУЕМАЯ ЛИТЕРАТУРА И ИСТОЧНИКИ .................................... 19

Приложение А. Справочные материалы............................................................. 20

Приложение Б. Варианты для выполнения ........................................................ 21

Приложение В. Листинг программного кода для примера............................... 22

2
1 КРАТКОЕ ОПИСАНИЕ РАБОТЫ

С помощью программного пакета молекулярной динамики LAMMPS


необходимо получить энергию образования вакансии и энергию
формирования междоузельного атома. Моделирование необходимо проводить
с применением периодических граничных условий. Также необходимо
исследовать сходимость решения по количеству атомов и сравнить
полученное значение энергий формирования с табличными значениями и
теоретической оценкой.
Формула энергии формирования вакансии:
Evf ≈ 9kTmelt , (1)
где k – постоянная Больцмана;

Tmelt – температура плавления;

Формула энергии формирования междоузельного атома:


Ei f ≈ 27 kTmelt , (2)

2 ЦЕЛЬ РАБОТЫ

Знакомство с программными пакетами LAMMPS и OVITO, а также их


использование для решения исследовательских задач. Развитие навыков
обработки полученных результатов.

3
3 ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Для решения задачи необходимо подготовить файл с командами для


LAMMPS. Создайте текстовый файл, дайте ему название в соответствии с
заданием. Например, «Fe_vacancy.txt». После этого откройте файл и введите
команды для моделирования.
Для удобства, в процессе написания файла можно добавлять
комментарии к вашему программному коду. Для этого используется символ
«#»

3.1 Блок начальных параметров


В данном блоке команд необходимо указать единицы измерения, которые
используются в задаче, размерность задачи, граничные условия и стиль
атомов, используемых для моделирования.
Команда units обозначает систему единиц, которые используются для
задания параметров и вывода результата. Возможны следующие аргументы
для данной команды: lj, real, metal, si, cgs, electron, micro, nano. В нашем
случае, для удобства используем систему metal. В ней расстояния измеряются
в анстремах (Å = 10-10 м), а энергия в электронвольтах (1 эВ = 1,6 × 10-19 Дж).
Команда dimension задает размерность решаемой задачи. Так как задача
трехмерная, задаем значение «3».
Команда boundary обозначает прикладываемые граничные условия к
границам моделируемой области. Значение «p» обозначает приложение
периодических условий. Значение «f» обозначает выбор жестких
непериодических границ. Значение «s» обозначает выбор подвижных
непериодических границ. В соответствии с условиями задачи мы должны
выбрать команду «boundary p p p».
Команда atom_style обозначает стиль атомов, который будет
использоваться в моделировании. Это определяет, какие атрибуты будут

4
связаны с атомами. Для нашего случая необходимо использовать стиль
«atomic».
В итоге блок основных параметров моделирования выглядит следующим
образом:
units metal
dimension 3
boundary p p p
atom_style atomic

3.2 Создание атомов


В данном блоке команд необходимо указать параметр и тип
кристаллической решетки, выбрать область моделирования, ориентацию
кристалла в пространстве и создать атомы.
С помощью команды variable присвоим значение постоянной решетки
переменной LatticeParameter. Для вызова значения переменной необходимо
использовать конструкцию ${*название переменной*}.
Затем с помощью команды lattice зададим тип кристаллической решетки
(возможные аргументы: bcc, fcc, hex, diamond, sc, custom) и параметр решетки,
используя уже определенное значение переменной LatticeParameter.
Если возьмем в качестве примера железо, то команда будет вызываться
следующим образом:
lattice bcc ${LatticeParameter}

Для задания области моделирования необходимо использовать две


команды: region для обозначения размеров области и create_box для
определения данной области, как области моделирования.
Команда region имеет следующий вид:
region *название области* *тип области* *аргументы *

5
где *название области* - введите сюда желаемое название для области
моделирования, например SimulationBox;
*тип области* - геометрический вид области. Форма определяется
аргументами sphere, block, cylinder и т.д.;
*аргументы* - вводимые в данную область аргументы зависят от
выбранного типа области. Кроме того, можно уточнить единицы измерения
расстояния при помощи аргумента units. Например, units box или units lattice,
задают для измерения расстояния в единицах длины (выбранной системы
единиц) или в параметрах решетки, соответственно.
Для задания прямоугольного параллелепипеда используется тип области
block. Для данного типа задаются координаты двух вершин, определяющий
размер (xmin xmax ymin ymax zmin zmax). Таким образом, если необходимо создать
куб с центром в начале координат (0, 0, 0) и со стороной, равной 10 параметрам
решетки, команда примет следующий вид:
region SimulationBox block -5 5 -5 5 -5 5

Команда create_box создает область моделирования по заданным


размерам региона. В простейшем случае команды имеет следующий вид:
create_box *типы атомов* *название используемой области*
где *типы атомов* - количество типов атомов, участвующих в
моделировании. В случае одного химического элемента равняется одному;
*название используемой области* - необходимо ввести название ранее
заданной области (командой region).
В данном случае, так как за пример взята решетка железа, команда будет
выглядеть следующим образом:
create_box 1 SimulationBox

Команда create_atoms создает атомы в выбранной области.


create_atoms *типы атомов* *стиль области* *аргументы*

6
где *типы атомов* - количество типов атомов, участвующих в
моделировании. В случае одного химического элемента равняется одному;
*стиль области* - команда поддерживает создание атомов в области
(командой region), создание одиночного атома (single), и рандомное
распределение в области (random);
*аргументы* - вводимые в данную область аргументы зависят от
выбранного стиля области. В случае region мы должны ввести название ранее
заданной области (командой region).
Таким образом, блок команд для создания атомов будет выглядеть
следующим образом:
variable LatticeParameter equal 2.866
lattice bcc ${LatticeParameter}
region SimulationBox block -5 5 -5 5 -5 5
create_box 1 SimulationBox
create_atoms 1 region SimulationBox

3.3 Определение межатомного потенциала взаимодействия и


вычисляемых параметров
При моделировании методом молекулярной динамики важное место
занимает потенциал межатомного взаимодействия. Для того, чтобы его задать,
необходимо прописать команды pair_style и pair_coeff.
Команда pair_style определяет стиль межатомного потенциала. Команда
pair_coeff. задает сам потенциал, и имеет следующий вид:
pair_coeff *№ типа атомов 1* *№типа атомов 2* *название файла*
*элемент*
где *№ типа атомов N* - пишется номер типа атомов, для которых
потенциал описывает взаимодействие;
*название файла* - необходимо ввести имя файла потенциала, который
должен находиться в той же папке с исполняемым файлом;

7
*элемент* - вводится элемент, для которого описывается
взаимодействие, чтобы найти его в файле потенциала.
В простейшем случае, когда всего один тип атомов (один химический
элемент) *№ типа атомов 1* и *№ типа атомов 2* равны 1, и команда будет
выглядеть следующим образом:
pair_coeff 1 1 FeCuNi.eam.alloy Fe

Если необходимо пройти по всем возможным значениям для переменной,


то необходимо использовать символ *. Таким образом, команда примет
следующий вид
pair_coeff * * FeCuNi.eam.alloy Fe

Затем идет указание вычисляемых параметров при моделировании.


Compute centro/atom задает вычисление параметра центросимметрии для
каждого атома. Данный параметр является мерой разупорядочения упаковки
атомов. В идеальной решетке, он равен нулю; при тепловых флуктуациях он
имеет значение около нуля, а при появлении точечного дефекта принимает
положительное значение. В конце указывается тип кристаллической решетки
(bcc или fcc).
Compute pe/atom задает вычисление потенциальной энергии для каждого
атома, а compute reduce суммирует все значения, получая потенциальную
энергию всех атомов.
pair_style eam/alloy
pair_coeff * * FeCuNi.eam.alloy Fe

compute csym all centro/atom bcc


compute eng all pe/atom
compute eatoms all reduce sum c_eng

8
3.4 Минимизация энергии

После установки всех параметров, необходимо приступить к


оптимизации геометрии кристалла, проведя минимизацию энергии.
Команда thermo указывает частоту вывода данных в окно, в процессе
моделирования. Например, при использовании команды thermo 10, программа
будет выводить данные каждые 10 шагов
Команда thermo_style задает выводимую информацию в окно, т.е.
указываются перечисляемые параметры для вывода в окно.
Команда dump настраивает запись данных моделирования в файл. Она
имеет следующий вид:
dump *ID дампа* *группа атомов* *стиль вывода* *частота записи*
*имя файла* * атрибуты*
где *ID дампа* - задаваемое пользователем имя файла вывода;
*группа атомов* - группа атомов, которая будет записана. Если
необходимо записать все атомы, то выбирается all;
*стиль вывода* - задается стиль записи в файл. Есть предустановленные
шаблоны наборов данных. В нашем случае необходим стиль custom.
*частота записи* - частота записи данных в файл;
*имя файла*- задается имя файла. Если указать в имени символ *, то на
месте звездочки будет указан записанный шаг по времени.
*атрибуты* - атрибуты, указываемые для команды custom. В нем
прописываются записываемые параметры в файл.

Для нашего случая необходимо записать номера атомов, тип файлов,


координаты атома, параметр цетросимметрии и энергии, поэтому в качестве
атрибутов стиля записи файла указываем: id type xs ys zs c_csym c_eng.
Учитывая все вышенаписанное, команды для вывода и записи данных
будут выглядеть следующим образом:

9
thermo 10
thermo_style custom step pe lx ly lz press pxx pyy pzz c_eatoms
dump 1 all custom 400 dump.relax.1.* id type xs ys zs c_csym c_eng

Для запуска минимизации кристалла используются команды min_style и


minimize. Первая описывает стиль минимизации энергии. Для нашего случая,
необходимо использовать алгоритм сопряженных градиентов (cg). Вторая
команда задается следующим образом:
minimize *допуск по энергии* *допуск по силам* *макс. кол-во итераций*
*макс. кол-во оценок сил и энергий*
где *допуск по энергии* - критерий, согласно которому, изменение энергии
должно быть меньше данного параметра между последовательными
итерациями;
*допуск по силам* - критерий, при котором глобальный вектор силы для
всех атомов будет меньше указанной величины. Т.о., силы на каждом из
атомов будет меньше данного допуска;
*макс. кол-во итераций* - количество шагов, до прекращения
минимизации;
*макс. кол-во оценок сил и энергий* - количество сравнений энергий или
сил, до прекращения минимизации;

После этого можно прекратить запись в файл dump.relax.1, используя


команду undump.
Данная секция примет следующий вид:
min_style cg
minimize 1e-15 1e-15 5000 5000
undump 1

10
После этого необходимо задать переменные, которые будут содержать
значения количества атомов (No) и энергию атомов (Ei), до зарождения
точечного дефекта.
variable N equal count(all)
variable No equal $N
variable E equal "c_eatoms"
variable Ei equal $E

3.5 Зарождение вакансии или междоузельного атома


Вакансия вводится в кристалл путем удаления атома из центра
моделируемой области (0, 0, 0). Введем переменную Ratom, которой присвоим
значение радиуса атома. Затем выберем область select, при помощи команды
region.
Командой delete_atoms удалим атомы из области select. Аргумент
«compress yes» запускает переопределение идентификаторов (номеров) всех
атомов, т.е. не будет разрыва списка атомов.
variable Ratom equal 1.2
region select sphere 0 0 0 ${Ratom} units box
delete_atoms region select compress yes

В случае внедрения междоузельного атома, необходимо добавить атом в


кристалл. Используем команду create_atoms, указав создание одного атома
атрибутом single.
variable Ratom equal 1.2
create_atoms 1 single 0 -1.8075 0 units box

11
3.6 Минимизация энергии после зарождения вакансии
После внедрения точечного дефекта необходимо оптимизировать
геометрию кристалла, для чего проводится повторная процедура
минимизации энергии.
Команда reset_timestep сбрасывает счетчик шагов по времени до
определенного значения.
Так как до этого была прописана команда undump, которая завершает
запись данных в файл, необходимо заново задать параметры вывода и записи.
reset_timestep 0
thermo 10
thermo_style custom step pe lx ly lz press pxx pyy pzz c_eatoms
dump 1 all custom 400 dump.relax.2.* id type xs ys zs c_csym c_eng

После этого запускаем минимизацию кристалла.


min_style cg
minimize 1e-15 1e-15 5000 5000

3.7 Расчет энергии формирования и вывод результата


Для расчета энергии формирования необходимо ввести переменные для
значения энергии после введения вакансии в кристалл.
variable Ef equal "c_eatoms"

Формула для определения энергии формирования вакансии имеет


следующий вид:
N0 − 1
Evf = E f − Ei , (3)
N0

где Evf - энергия формирования вакансии;


Ef – энергия кристалла, после введения вакансии;
Ei – энергия идеального кристалла;

12
N0 – количество атомов, до введения вакансии.

Введем переменную и используем формулу (3):


variable Ev equal (${Ef}-((${No}-1)/${No})*${Ei})

Для определения энергии формирования междоузельного атома


необходимо использовать следующую формулу:

N0 + 1
Ei f = E f − Ei , (4)
N0

Введем переменную и используем формулу (4):


variable Einter equal (${Ef}-((${No}+1)/${No})*${Ei})

Для вывода сообщения в окно используется команда print. Сообщение для


вывода на экран записывается в кавычках после команды print. Добавим вывод
сообщения о завершении расчета, количестве атомов в моделируемом
кристалле, энергию до и после формирования вакансии, и саму энергию
формирования точечного дефекта.
print "The simulation is done!"
print "Total number of atoms = ${No}"
print "Initial energy of atoms = ${Ei}"
print "Final energy of atoms = ${Ef}"
print "Vacancy formation energy = ${Ev}"

3.8 Запуск скрипта в LAMMPS


После сохранения текстового файла с программным кодом, необходимо
запустить файл RUN LAMMPS.bat, предварительно указав там название
своего файла.

13
Содержимое файла приведено ниже:
lmp_serial < *имя файла*.txt
echo All caclulations is done!
echo Press a key to end
pause > nul
pause > nul
Запускаем моделирование. После окончания расчета будет выведен
результат (см. рис. 1).

Рисунок 1 – Полученный результат моделирования

14
4 ВИЗУАЛИЗАЦИЯ РЕШЕНИЯ

Для визуализации необходимо запустить программу Ovito.exe (см. рис. 2).

Рисунок 2 – Внешний вид программы Ovito

Для начала необходимо выполнить команду File -> Load File. В окне
выбрать необходимый файл, с результатом моделирования (кристалл с
дефектом), например «dump.relax.2.52».
После этого, в правой части экрана активировать фильтры для обработки
результатов. Разрежем кристалл пополам: Add modification -> Slice. В списке
модификаторов появится элемент Slice, для которого можно изменить
ориентацию и направление разреза кристалла (см. рис. 3).

15
Рисунок 3 – Разрез кристалла

Далее необходимо добавить еще один элемент Slice, применив к нему


опцию «Reverse orientation». Устанавливаем значение дистанции разреза так,
чтобы было наглядно видно образовавшийся точечный дефект (см. рис. 4).

Рисунок 4 – Вид кристаллической решетки с внедренной вакансией

16
Для наглядности результата можно добавить фильтр Color Coding.
Выбрав необходимое свойство (например, c_eng), необходимо нажать кнопку
Adjust Range, и выбрать желаемую палитру цветов (см. рис. 5).

Рисунок 5 – Применение фильтра Color coding

17
5 ТРЕБОВАНИЯ К ОТЧЕТУ

Должно быть проведено моделирование зарождения вакансии и


междоузельного атома, найдены энергии зарождения данных точечных
дефектов. Материал и потенциал межатомного взаимодействия выбирается в
соответствии с вариантом.
Отчёт должен содержать исходные данные, постановку задачи,
сходимость по количеству атомов, иллюстрации результатов моделирования,
сравнение с табличными значениями и теоретической оценкой энергии
образования точечных дефектов.
В приложении к отчету должен быть приведен листинг программного
кода. Программный код обязательно должен быть дополнен комментариями.

18
6 ИСПОЛЬЗУЕМАЯ ЛИТЕРАТУРА И ИСТОЧНИКИ

1. http://lammps.sandia.gov
2. https://www.ctcms.nist.gov/potentials/
3. Foiles S. M., Baskes M. I., Daw M. S. Embedded-atom-method functions
for the fcc metals Cu, Ag, Au, Ni, Pd, Pt, and their alloys //Physical review
B. – 1986. – Т. 33. – №. 12. – С. 7983.
4. Wirth B. D. et al. Energetics of formation and migration of self-interstitials
and self-interstitial clusters in α-iron //Journal of nuclear materials. – 1997.
– Т. 244. – №. 3. – С. 185-194.
5. Willaime F. et al. Stability and mobility of self-interstitials and small
interstitial clusters in α-iron: ab initio and empirical potential calculations
//Nuclear Instruments and Methods in Physics Research Section B: Beam
Interactions with Materials and Atoms. – 2005. – Т. 228. – №. 1. – С. 92-
99.
6. Korzhavyi P. A. et al. First-principles calculations of the vacancy formation
energy in transition and noble metals //Physical Review B. – 1999. – Т. 59.
– №. 18. – С. 11693.

19
Приложение А. Справочные материалы

Таблица А.1 – Свойства металлов


Элемент Радиус атома, пм Параметр Температура
решетки, Å плавления, К
Cu 128 3,615 1356,55
Fe 126 2,866 1812
Ni 124 3,524 1726
Ag 144 4,086 1235,1

Таблица А.2 – Энергии формирования вакансий и междоузельных атомов


в различных материалах
Элемент Энергия образования Энергия образования
вакансии, эВ междоузельного атома, эВ
Cu 1,33 2,76
Fe 2,0 4,8
Ni 1,67 5,05
Ag 0,96 3,92

20
Приложение Б. Варианты для выполнения

№ Кристалл Потенциал Стиль


варианта потенциала
1 Cu Mendelev_Cu2_2012.eam.fs eam/fs
2 Cu cu_ag_ymwu.eam.alloy eam/alloy
3 Cu Cu-Zr_2.eam.fs eam/fs
4 Cu Cu_smf7.eam eam
5 Fe Fe-Ni.eam.alloy eam/alloy
6 Fe FeCuNi.eam.alloy eam/alloy
7 Ni Mishin_updated-Ni-Al-Co-2013.eam.alloy eam/alloy
8 Ni Fe-Ni.eam.alloy eam/alloy
9 Ni Ni99.eam.alloy eam/alloy
10 Ag Ag.eam.alloy eam/alloy
11 Ag cu_ag_ymwu.eam.alloy eam/alloy
12 Ag PdAgH_MorsePd3Ag.eam.alloy eam/alloy

21
Приложение В. Листинг программного кода для примера

units metal
dimension 3
boundary p p p
atom_style atomic

variable LatticeParameter equal 2.866


lattice bcc ${LatticeParameter}
region SimulationBox block -5 5 -5 5 -5 5
create_box 1 SimulationBox
create_atoms 1 region SimulationBox

pair_style eam/alloy
pair_coeff * * FeCuNi.eam.alloy Fe

compute csym all centro/atom bcc


compute eng all pe/atom
compute eatoms all reduce sum c_eng

reset_timestep 0
thermo 10
thermo_style custom step pe lx ly lz press pxx pyy pzz c_eatoms
dump 1 all custom 400 dump.relax.1.* id type xs ys zs c_csym c_eng
min_style cg
minimize 1e-15 1e-15 5000 5000
undump 1

variable N equal count(all)


variable No equal $N
variable E equal "c_eatoms"
variable Ei equal $E

variable Ratom equal 1.2


region select sphere 0 0 0 ${Ratom} units box
delete_atoms region select compress yes

reset_timestep 0
thermo 10
thermo_style custom step pe lx ly lz press pxx pyy pzz c_eatoms
dump 1 all custom 400 dump.relax.2.* id type xs ys zs c_csym c_eng
22
min_style cg
minimize 1e-15 1e-15 5000 5000

variable Ef equal "c_eatoms"


variable Ev equal (${Ef}-((${No}-1)/${No})*${Ei})

print "The simulation is done!"


print "Total number of atoms = ${No}"
print "Initial energy of atoms = ${Ei}"
print "Final energy of atoms = ${Ef}"
print "Vacancy formation energy = ${Ev}"

23

Вам также может понравиться