Написание программы, отображающей поведение нанокластера под действием силы тяжести
Характеристика описания взаимодействия между молекулами потенциалом Леннард-Джонса. Проведение исследования деформации структуры нанокластера при соударении с твердой поверхностью под действием силы тяжести. Особенность написания кода программы.
Рубрика | Физика и энергетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 12.01.2020 |
Размер файла | 451,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Санкт-Петербургский государственный политехнический университет
Институт Прикладной математики и механики Кафедра Теоретической механики
Курсовой проект
Разрушение нанокластера
С.А. Воробьев
Санкт-Петербург 2015
Оглавление
Введение
Глава 1. Нанокластер и взаимодействия внутри него
1.1 Нанокластер
Глава 2. Аннотация проекта и поставленные задачи
2.1 Аннотация проекта и поставленные задачи
2.2 Формулировка задачи
2.3 Написание кода
Список литературы
Введение
В данной работе рассмотрена теоретическая модель поведения наноструктуры под действием силы. Для решения поставленной задачи необходимо было выполнить следующее:
· Написать программу, которая описывает и визуализирует взаимодействие внутри структуры; для этого были использованы потенциал Леннард-Джонса и хрупкий потенциал Леннард-Джонса
· Рассмотреть поведение структуры с разным количеством частиц и при разном взаимодействии.
В первой главе приведена краткая информация о наноструктурах и потенциалах, описывающих их взаимодействие. Во второй главе приведен код программы.
Глава 1. Нанокластер и взаимодействия внутри него
1.1 Нанокластер
Под понятием кластер (англ. Cluster -- пучок, рой, скопление) понимают объединение нескольких однородных элементов, которое может рассматриваться как самостоятельная единица, обладающая определенными свойствами.
Нанокластеры -- разновидность наночастиц, представляющая собой аморфную или поликристаллическую наноструктуру, хотя бы один характерный размер которой находится в пределах 1-10нм.
Взаимодействие между молекулами описано потенциалом Леннард-Джонса:
Где - сила Леннард-Джонса.
Также используется хрупкое взаимодействие Леннард-Джонса:
Где -- расстояние, на котором реализуется минимальное значение силы Леннард-Джонса (расстояние разрыва связи) -- расстояние обрыва взаимодействия.
б -- положительный параметр, определяющий хрупкость взаимодействия.
1 Приставка «нано» означает 10??-9 . Атомарные структуры имеют масштаб нанометров. Нанотехнологии -- технологии, позволяющие создавать и эксплуатировать объекты нанометрового масштабного уровня. молекула нанокластер код программа
Глава 2. Аннотация проекта и поставленные задачи
2.1 Аннотация проекта и поставленные задачи
Данный проект посвящен изучению деформации структуры нанокластера при соударении с твердой поверхностью под действием силы тяжести.
2.2 Формулировка задачи
Написать программу, отображающую поведение нанокластера под действием силы тяжести.
2.3 Написание кода
1. function MainBalls(canvas, slider_01, text_01, slider_02, text_02) {
2. canvas.onselectstart = function () {return false;}; // запрет выделения canvas
3. // Предварительные установки
4. var context = canvas.getContext("2d"); // на context происходит рисование
5. canvas.oncontextmenu = function (e) {return false;}; // блокировка контекстного меню
6. var Pi = 3.1415926; // число "пи"
7. var m0 = 1; // масштаб массы
8. var t0 = 1; // масштаб времени (период колебаний исходной системы)
9. var a0 = 1; // масштаб расстояния (диаметр шара)
10. var g0 = a0 / t0 / t0; // масштаб ускорения (ускорение, при котором за t0 будет пройдено расстояние a0)
11. var k0 = 2 * Pi / t0; // масштаб частоты
12. var C0 = m0 * k0 * k0; // масштаб жесткости
13. var B0 = 2 * m0 * k0; // масштаб вязкости
14. // *** Задание физических параметров ***
15. var Ny = 16; // число шаров, помещающихся по вертикали в окно (задает размер шара относительно размера окна)
16. var m = 1 * m0; // масса
17. var CWall = 10 * C0; // жесткость стен
18. var CBall = 0.1 * CWall; // жесткость между частицами
19. var BVisc = 0.008 * B0; // вязкость среды
20. var BWall = 0.03 * B0; // вязкость на стенках
21. var r = 0.5 * a0; // радиус частицы в расчетных координатах
22. var K = 0.7; // все силы, зависящие от радиуса, ограничиваются значением, реализующимся при r/a = K
23. var a = 2 * r; // равновесное расстояние между частицами
24. var aCut = 2 * a; // радиус обрезания
25. var alfa = 2; // коэффициент для хрупкого вз. Лен-Дж
26. // *** Задание вычислительных параметров ***
27. var fps = 60; // frames per second - число кадров в секунду (качечтво отображения)
28. var spf = 100; // steps per frame - число шагов интегрирования между кадрами (скорость расчета)
29. var dt = 0.04 * t0 / fps; // шаг интегрирования (качество расчета)
30. var mg = 0 * m * g0; // сила тяжести
31. // Выполнение программы
32. var sqrt3 = Math.sqrt(3);
33. var r2 = r * r; // ___в целях оптимизации___
34. var a2 = a * a; // ___в целях оптимизации___
35. var D = a2 * CBall / 72; // энергия связи между частицами
36. var LJCoeff = 12 * D / a2; // коэффициент для расчета потенциала Л-Дж
37. var bet = Math.pow(13 / 7, 1/6) * a; // коэффициент для SLJ потенциала
38. var bet2 = bet * bet; // ___в целях оптимизации___
39. var SLJDenominator = 1 / (aCut * aCut - bet2); // знаменатель для расчета SLJ потенциала
40. var sqrtkoef = Math.sqrt(alfa/(1+alfa)); //___в целях оптимизации___
41. var Ka = K * a; // ___в целях оптимизации___
42. var K2a2 = K * K * a2; // ___в целях оптимизации___
43. var dNd = null; // ссылка на захваченный курсором шар (drag & drop)
44. var SLJEnabled = document.getElementById('checkbox_01').checked;
45. this.setSlider_01 = function(c) {mg = c * m * g0;}; // функция для слайдера гравитации;
46. this.setCheckbox_01 = function(bool) {SLJEnabled = bool;};
47. this.setCheckbox_01(SLJEnabled);
48. // Настройка интерфейса
49. slider_01.min = 0; slider_01.max = 5;
50. slider_01.step = 0.05;
51. slider_01.value = mg / m / g0; // начальное значение ползунка должно задаваться после min и max
52. text_01.value = mg / m / g0;
53. // Запуск новой системы
54. // следующие переменные должны пересчитываться каждый раз, когда мы изменяем значение Ny
55. var scale, w, h;
56. var rScale13, rScaleShift;
57. this.newSystem = function() {
58. scale = canvas.height / Ny / a0; // масштабный коэффициент для перехода от расчетных к экранным координатам
59. w = canvas.width / scale; // ширина окна в расчетных координатах
60. h = canvas.height / scale; // высота окна в расчетных координатах
61. rScale13 = r * scale * 1.3; // ___в целях оптимизации___
62. rScaleShift = r * scale / 5; // ___в целях оптимизации___
63. this.setTriangularLattice(5); // сразу создаем конфигурацию
64. };
65. // Работа с мышью
66. var mx_, my_; // буфер позиции мыши (для расчета скорости при отпускании шара)
67. canvas.onmousedown = function(e) { // функция при нажатии клавиши мыши
68. var m = mouseCoords(e); // получаем расчетные координаты курсора мыши
69. // цикл в обратную сторону, чтобы захватывать шар, нарисованный "сверху"
70. // (т.к. цикл рисования идет в обычном порядке)
71. for (var i = balls.length - 1; i >= 0; i--) {
72. var b = balls[i];
73. var rx = b.x - m.x;
74. var ry = b.y - m.y;
75. var rLen2 = rx * rx + ry * ry; // квадрат расстояния между курсором и центром шара
76. if (rLen2 <= r2) { // курсор нажал на шар
77. if (e.which == 1) { // нажата левая клавиша мыши
78. dNd = b;
79. dNd.xPlus = dNd.x - m.x; // сдвиг курсора относительно центра шара по x
80. dNd.yPlus = dNd.y - m.y; // сдвиг курсора относительно центра шара по y
81. mx_ = m.x; my_ = m.y;
82. canvas.onmousemove = mouseMove; // пока клавиша нажата - работает функция перемещения
83. } else if (e.which == 3) // нажата правая клавиша мыши
84. balls.splice(i, 1); // удалить шар
85. return;
86. }
87. }
88. // если не вышли по return из цикла - нажатие было вне шара, добавляем новый
89. if (e.which == 1) {
90. dNd = addNewBall(m.x, m.y, true); // добавляем шар и сразу захватываем его курсором
91. if (dNd == null) return; // если шар не добавился (из за стен или других шаров) - возвращаемся
92. dNd.xPlus = 0; dNd.yPlus = 0; // держим шар по центру
93. mx_ = m.x; my_ = m.y;
94. canvas.onmousemove = mouseMove; // пока клавиша нажата - работает функция перемещения
95. }
96. };
97. document.onmouseup = function(e) { // функция при отпускании клавиши мыши
98. canvas.onmousemove = null; // когда клавиша отпущена - функции перемещения нету
99. dNd = null; // когда клавиша отпущена - захваченного курсором шара нету
100. };
101. function mouseMove(e) { // функция при перемещении мыши, работает только с зажатой ЛКМ
102. var m = mouseCoords(e); // получаем расчетные координаты курсора мыши
103. dNd.x = m.x + dNd.xPlus;
104. dNd.y = m.y + dNd.yPlus;
105. dNd.vx = 0.6 * (m.x - mx_) / dt / fps; dNd.vy = 0.6 * (m.y - my_) / dt / fps;
106. mx_ = m.x; my_ = m.y;
107. }
108. function mouseCoords(e) { // функция возвращает расчетные координаты курсора мыши
109. var m = [];
110. var rect = canvas.getBoundingClientRect();
111. m.x = (e.clientX - rect.left) / scale;
112. m.y = (e.clientY - rect.top) / scale;
113. return m;
114. }
115. // Работа с массивом
116. var balls = []; // массив шаров
117. var addNewBall = function(x, y, check) {
118. // проверка - не пересекается ли новый шар со стенами или уже существующими шарами
119. if (check) {
120. if (x - r < 0 || x + r > w || y - r < 0 || y + r > h) return null;
121. for (var i = 0; i < balls.length; i++) {
122. var rx = balls[i].x - x;
123. var ry = balls[i].y - y;
124. var rLen2 = rx * rx + ry * ry;
125. if (rLen2 < 4 * r2) return null;
126. }
127. }
128. var b = [];
129.
130. b.x = x; b.y = y; // расчетные координаты шара
131. b.fx = 0; b.fy = mg; // сила, действующая на шар
132. b.vx = 0; b.vy = 0; // скорость
133. balls[balls.length] = b; // добавить элемент в конец массива
134. return b;
135. };
136. /* this.setRose = function() {balls = []; //розочка
137. addNewBall(w/2, h/8);
138. for (var i = 0; i< 5*Math.PI/3; i+= Math.PI/3){
139. addNewBall(w/2+a*Math.cos(i), h/8+a*Math.sin(i));
140. }
141. };
142. this.setQuad = function() { // квадратная конфигурация
143. balls = [];
144. for (var i = 1; i < 4; i++)
145. for(var j = 1; j < 4; j++)
146. addNewBall(i *(a0)+7*w/16, j * (a0));
147. }; */
148. this.setTriangularLattice = function(lat) { // задать на поле треугольную решетку
149. balls = [];
150. for (var j = 0; j < Math.floor(lat / (sqrt3 * r)); j++)
151. for (var j = 0; j < Math.floor(lat / (sqrt3 * r)); j++)
152. for (var i = 0; i < Math.floor(lat / r)-1; i++)
153. if ((i + j) % 2 == 0) addNewBall(r * (i + 1) +3.2*w/8, r * (1 + sqrt3 * j), false);
154. };
155. this.setEmpty = function() {balls = [];};
156. // Основной цикл программы
157. function control() {
158. physics();
159. draw();
160. }
161.
162. // Расчетная часть программы
163.
164. function physics() { // то, что происходит каждый шаг времени
165. for (var s = 1; s <= spf; s++) {
166.
167. var BViscTh = BVisc;
168. // пересчет сил идет отдельным массивом, т.к. далее будут добавляться силы взаимодействия между шарами
169. for (var i0 = 0; i0 < balls.length; i0++) {
170. balls[i0].fx = - BViscTh * balls[i0].vx;
171. balls[i0].fy = mg - BViscTh * balls[i0].vy;
172. }
173.
174. for (var i = 0; i < balls.length; i++) {
175. // расчет взаимодействия производится со всеми следующими шарами в массиве,
176. // чтобы не считать каждое взаимодействие дважды
177. var b = balls[i];
178. for (var j = i + 1; j < balls.length; j++) {
179. var b2 = balls[j];
180. var rx = b.x - b2.x; var ry = b.y - b2.y; // вектор смотрит на первый шар (b)
181. var r2 = rx * rx + ry * ry; // квадрат расстояния между шарами
182. var rLen = (Math.sqrt(r2));
183.
184.
185. // сила взаимодействия
186. var s2 = a2 / r2; var s4 = s2 * s2; // ___в целях оптимизации___
187. var F = LJCoeff * s4 * s4 * (s4 * s2 - 1); // сила взаимодействия Леннарда-Джонса
188. if (SLJEnabled) {
189.
190. var kSLJ; // k(r) - сглаживающий коэффициент SLJ потенциала
191. if (rLen <= bet) kSLJ = 1;
192.
193. if (rLen <= aCut && rLen > bet) {
194. var brackets = (r2 - bet2) * SLJDenominator;
195. var brackets2=((1-(1+sqrtkoef)*brackets*brackets))*((1-(1+sqrtkoef)*brackets*brackets));
196. kSLJ = (1+alfa)*(brackets2)-alfa;
197.
198. }
199. if (rLen >=aCut) {
200. kSLJ=0;
201. }
202. F *= kSLJ;
203. }
204.
205. // суммируем силы
206. var Fx = F * rx; var Fy = F * ry;
207.
208. b.fx += Fx; b.fy += Fy;
209. b2.fx -= Fx; b2.fy -= Fy;
210. }
211.
212. if (b == dNd) continue; // если шар схвачен курсором - его вз. со стенами и перемещение не считаем
213.
214. if (b.y + r > h) { b.fy += -CWall * (b.y + r - h) - BWall * b.vy; }
215. if (b.y - r < 0) { b.fy += -CWall * (b.y - r) - BWall * b.vy;}
216. if (b.x + r > w) { b.fx += -CWall * (b.x + r - w) - BWall * b.vx; }
217. if (b.x - r < 0) { b.fx += -CWall * (b.x - r) - BWall * b.vx; }
218.
219. b.vx += b.fx / m * dt; b.vy += b.fy / m * dt;
220. b.x += b.vx * dt; b.y += b.vy * dt;
221. }
222. }
223. }
224.
225. // Рисование
226. context.fillStyle = "#3070d0";
227. function draw() {
228. context.clearRect(0, 0, w * scale, h * scale); // очистить экран
229. for (var i = 0; i < balls.length; i++){
230. var xS = balls[i].x * scale; var yS = balls[i].y * scale;
231. context.beginPath();
232. context.arc(xS, yS, r * scale, 0, 2 * Math.PI, false);
233. context.closePath();
234. context.fill();
235. }
236. }
237.
238. // Запуск системы
239. this.newSystem();
240. setInterval(control, 1000 / fps);
241. // след. функция обновляет информацию о количестве частиц на поле
242. setInterval(function(){document.getElementById('ballsNum').innerHTML = balls.length;}, 1000 / 20);
243. }
Итоги работы.
Данная работа демонстрирует различия между хрупким и обычным потенциалами Леннард-Джонса. Видно, что при хрупком взаимодействии нанокластер фрагментируется, а при обычном взаимодействии наблюдается пластическая деформация.
Начальное состояние структуры (она находится на расстоянии 11r от нижней стенки, где r -- радиус одной частицы, количество частиц -- 23, падение -- свободное, = 1, б=2):
Деформация при обычном взаимодействии:
Хрупкое взаимодействие:
Список литературы
1. Баррет Д. JavaScript. Web-профессионалам. - Киев: БХВ - Киев, 2001.
2. Вайк А. JavaScript в примерах. - Киев: ДиаСофт, 2000.
3. И.П. Суздалев. Нанотехнология: физико-химия нанокластеров, наноструктур и наноматериалов. М.КомКнига, 2006.
4. А.М. Кривцов. Деформирование и разрушение твердых тел с микроструктурой. Москва ФИЗМАЛИТ 2007.
Размещено на Allbest.ru
...Подобные документы
Движение тела по эллиптической орбите вокруг планеты. Движение тела под действием силы тяжести в вертикальной плоскости, в среде с сопротивлением. Применение законов движения тела под действием силы тяжести с учетом сопротивления среды в баллистике.
курсовая работа [1,2 M], добавлен 17.06.2011Гравитационные, электромагнитные и ядерные силы. Взаимодействие элементарных частиц. Понятие силы тяжести и тяготения. Определение силы упругости и основные виды деформации. Особенности сил трения и силы покоя. Проявления трения в природе и в технике.
презентация [204,4 K], добавлен 24.01.2012Динамические уравнения Эйлера при наличии силы тяжести. Уравнения движения тяжелого твердого тела вокруг неподвижной точки. Первые интегралы системы. Вывод уравнения для угла нутации в случае Лагранжа. Быстро вращающееся тело: псевдорегулярная прецессия.
презентация [422,2 K], добавлен 30.07.2013Ускорение на поверхности Земли. Астрономо-гравиметрическое нивелирование. Спутниковая альтиметрия. Карта аномалий силы тяжести, рассчитанная по модели EGM2008. Формула Стокса. Аномалии силы тяжести. Применение спутниковой альтиметрии в батиметрии.
контрольная работа [52,8 K], добавлен 17.04.2014Законы движения планет Кеплера, их краткая характеристика. История открытия Закона всемирного тяготения И. Ньютоном. Попытки создания модели Вселенной. Движение тел под действием силы тяжести. Гравитационные силы притяжения. Искусственные спутники Земли.
реферат [339,9 K], добавлен 25.07.2010Силы, действующие на частицу, осаждающуюся в гравитационном поле. Скорость осаждения твердых частиц под действием силы тяжести в зависимости от диаметра частиц и физических свойств частицы и жидкости. Описание установки, порядок выполнения работ.
лабораторная работа [275,9 K], добавлен 29.08.2015Изучение понятия "вес тела" - силы, с которой это тело действует на опору или подвес, вследствие действия на него силы тяжести. Обозначение и направление веса тела. Характеристика принципа работы и видов динамометров – приборов для измерения силы (веса).
презентация [465,2 K], добавлен 13.12.2010Методика расчета силы взаимодействия между двумя реальными молекулами в рамках классической физики. Определение потенциальной энергии взаимодействия как функции от расстояния между центрами молекул. Уравнение Ван-дер-Ваальса. Сверхкритическое состояние.
презентация [275,6 K], добавлен 29.09.2013Представления о гравитационном взаимодействии. Сущность эксперимента Кавендиша. Кинематика материальной точки. Определение ускорения силы тяжести с помощью математического маятника. Оценка абсолютной погрешности косвенных измерений периода его колебаний.
лабораторная работа [29,7 K], добавлен 19.04.2011Маятник под воздействием сил тяжести и электростатического взаимодействия. Колебания стержня и маятника под действием сил тяжести и упругости. Примеры комбинированных маятников, расчет частоты колебаний. Затухающие колебания комбинированного осциллятора.
курсовая работа [307,1 K], добавлен 11.12.2012Последовательность проведения опыта, применяемое оборудование и материалы. Свободное падение как движение под действием силы тяжести, при отсутствии сопротивления воздуха. Первое исследование свободного падения тел ученым Галилеем, расчет ускорения.
презентация [544,7 K], добавлен 25.02.2014Построение графиков координат пути, скорости и ускорения движения материальной точки. Вычисление углового ускорения колеса и числа его оборотов. Определение момента инерции блока, который под действием силы тяжести грузов получил угловое ускорение.
контрольная работа [125,0 K], добавлен 03.04.2013Воздействие внешней периодической силы. Возникновение вынужденных колебаний, имеющих незатухающий характер. Колебания, возникающие под действием периодически изменяющейся по гармоническому закону силы. Зависимость амплитуды от частоты вынуждающей силы.
презентация [415,6 K], добавлен 21.03.2014Анализ аксиоматики динамики. Понятие инерциальных систем отсчета. Область применимости механики Ньютона. Понятие взаимодействий и сил. Фундаментальные взаимодействия в природе. Силы трения, сопротивления и тяжести. Особенности движения в поле силы.
презентация [2,9 M], добавлен 08.10.2013Описание движения твёрдого тела. Направление векторов угловой скорости и углового ускорения. Движение под действием силы тяжести. Вычисление момента инерции тела. Сохранение момента импульса. Превращения одного вида механической энергии в другой.
презентация [6,6 M], добавлен 16.11.2014Изучение влияния силы тяжести и силы Архимеда на положение тела в воде. Взаимосвязь плотности жидкости и уровня погружения объекта. Определение расположения керосина и воды в одном сосуде. Понятие водоизмещения судна, обозначение предельных ватерлиний.
презентация [645,1 K], добавлен 05.03.2012Классификация энергии: механическая, внутренняя, электромагнитная, химическая и ядерная. Работа упругих сил пружины и силы тяжести. Понятие мощности как характеристики быстроты совершения работы. Консервативные (потенциальные) силы и центральное поле.
презентация [477,5 K], добавлен 29.09.2013Силы, возникающие между соприкасающимися телами при их относительном движении. Определение величины и направления силы трения скольжения, закон Амонтона—Кулона. Виды трения в механизмах и машинах. Сцепление с поверхностью как обеспечение перемещения.
презентация [820,2 K], добавлен 16.12.2014Сущность закона определения максимальной силы трения покоя. Зависимость модуля силы трения скольжения от модуля относительной скорости тел. Уменьшение силы трения скольжения тела с помощью смазки. Явление уменьшения силы трения при появлении скольжения.
презентация [265,9 K], добавлен 19.12.2013Движение центра масс механической системы. Количество движения точки и импульс силы. Теорема об изменении количества движения механической системы. Движение точки под действием центральной силы. Закон сохранения кинетического момента механической системы.
презентация [533,7 K], добавлен 09.11.2013