Редактирование: Потенциал Морзе
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
[[ТМ|Кафедра ТМ]] > [[Научный справочник]] > [[Потенциалы взаимодействия]] > [[Парные силовые потенциалы взаимодействия | Парные силовые]] > [[Потенциал Морзе | Морзе]]<HR> | [[ТМ|Кафедра ТМ]] > [[Научный справочник]] > [[Потенциалы взаимодействия]] > [[Парные силовые потенциалы взаимодействия | Парные силовые]] > [[Потенциал Морзе | Морзе]]<HR> | ||
− | |||
Парный силовой потенциал взаимодействия. | Парный силовой потенциал взаимодействия. | ||
Определяется формулой: | Определяется формулой: | ||
− | + | ||
+ | <math> | ||
\varPi(r) = | \varPi(r) = | ||
D\left[e^{-2\alpha(r-a)}-2e^{-\alpha(r-a)}\right], | D\left[e^{-2\alpha(r-a)}-2e^{-\alpha(r-a)}\right], | ||
Строка 15: | Строка 15: | ||
Потенциал имеет один безразмерный параметр <math>\alpha a</math>. Сила, соответствующая потенциалу Морзе, вычисляется по формуле | Потенциал имеет один безразмерный параметр <math>\alpha a</math>. Сила, соответствующая потенциалу Морзе, вычисляется по формуле | ||
− | + | ||
+ | <math> | ||
F(r) = -\varPi'(r) = | F(r) = -\varPi'(r) = | ||
2\alpha D\left[e^{-2\alpha(r-a)}-e^{-\alpha(r-a)}\right]. | 2\alpha D\left[e^{-2\alpha(r-a)}-e^{-\alpha(r-a)}\right]. | ||
Строка 22: | Строка 23: | ||
Для потенциала Морзе жесткость связи, критическая длина связи и прочность связи, соответственно, равны | Для потенциала Морзе жесткость связи, критическая длина связи и прочность связи, соответственно, равны | ||
− | + | <math>C = \varPi''(a) = 2\alpha^2D, \qquad b = a + \frac{\ln2}{\alpha}, \qquad P = |F(b)| = \frac{\alpha D}2.</math> | |
− | |||
− | |||
− | <htmlet nocache="yes"> | + | Сравнение взаимодействия Морзе с взаимодействием [[Потенциал Леннарда-Джонса|Леннарда-Джонса]] приведено на интерактивных графиках ниже. Показана зависимость от расстояния потенциала <math>\varPi</math> и силы <math>F</math>. Сравнение проведено при одинаковых значениях энергии связи <math>D</math> и длины связи <math>a</math>. Перемещение слайдера позволяет проследить влияние безразмерного параметра <math>\alpha a</math>, при этом энергия связи <math>D</math> и длина связи <math>a</math> остаются неизменными. Значения критической длины связи <math>b</math> и прочности связи <math>P</math>, отмеченные на графиках, соответствуют потенциалу Леннарда-Джонса. |
+ | <addscript src=MLJ/> | ||
+ | <htmlet nocache="yes">MLJ_TM</htmlet> | ||
− | Из графиков видно, что при <math>\alpha a = 6</math> | + | Из графиков видно, что при <math>\alpha a = 6</math> графики, характеризующие взаимодействие Морзе и Леннарда-Джонса, близки. В частности, в этом случае для них совпадает жесткость связи <math>C = \varPi''(a)</math>. При увеличении <math>\alpha a</math> ширина потенциальной ямы для взаимодействия Морзе уменьшается, взаимодействие становится более жестким и хрупким. Уменьшение <math>\alpha a</math> приводит к противоположным изменениям — потенциальная яма расширяется, жесткость падает. |
− | + | ''Текст программы построения графиков на языке JavaScript:'' <toggledisplay status=hide showtext="Показать↓" hidetext="Скрыть↑" linkstyle="font-size:default"> | |
− | |||
Файл '''"MLJ.js"''' | Файл '''"MLJ.js"''' | ||
− | < | + | <source lang="javascript" first-line="1"> |
− | // Сравнение взаимодействий Морзе и | + | // Сравнение взаимодействий Морзе и Леннарда-Джонса |
− | // | + | // Разработчик А. М. Кривцов |
− | // | + | // 02.05.2014 |
− | |||
// Интернет: tm.spbstu.ru/Morse | // Интернет: tm.spbstu.ru/Morse | ||
− | function | + | function MainMLJ(canvas_1, canvas_2, Slider_01, Text_01) { |
// Предварительные установки | // Предварительные установки | ||
− | + | const X_max = canvas_1.width; | |
− | + | const Y_max = canvas_1.height; | |
// Размерные параметры | // Размерные параметры | ||
− | + | const a = 1.; // длина связи | |
− | + | const D = 1.; // энергия связи | |
// Расчет параметров взаимодействия | // Расчет параметров взаимодействия | ||
− | + | const b = a * Math.pow(13./7, 1./6); // положение минимума силы Леннарда-Джонса (= 1.1086834 a) | |
− | + | const b2 = b * b; | |
− | + | const P0 = 12 * D / a; // коэффициент в выражении для силы Леннарда-Джонса | |
− | + | const P = 42. / 169 * P0 / b; // модуль минимума силы Леннарда-Джонса | |
// Задаваемые параметры | // Задаваемые параметры | ||
− | var kappa = 6; // параметр взаимодействия Морзе | + | var kappa = 6; // безразмерный параметр взаимодействия Морзе |
+ | var ac = 1.4 * a; var ac2 = ac * ac; // радиус обрезания взаимодействия | ||
+ | |||
+ | const fps = 50; // frames per second - число кадров в секунду (качество отображения) | ||
// Область построения графика | // Область построения графика | ||
− | + | const x_min = 0.1 * a; | |
− | + | const x_max = 2.5 * a; | |
− | + | const y_min_1 = -1.5 * D; | |
− | + | const y_max_1 = -y_min_1; | |
+ | const y_min_2 = -1.5 * P; | ||
+ | const y_max_2 = -y_min_2; | ||
+ | |||
+ | // Установка слайдера | ||
+ | |||
+ | // функция, запускающаяся при перемещении слайдера | ||
+ | this.set_01 = function(input_01) | ||
+ | { | ||
+ | kappa = input_01; // input_01 - значение на слайдере | ||
+ | draw_1(); draw_2(); | ||
+ | } | ||
− | + | // настройка слайдеров и текстовых полей | |
− | + | Slider_01.min = 2; // лучше было бы взять Slider_01.min = b, но b не кратно значению Slider_01.step, что портит слайдер | |
− | + | Slider_01.max = 18; | |
− | + | Slider_01.step = 0.1; | |
− | + | Slider_01.value = kappa; // значение ползунка должно задаваться после min, max и step | |
− | + | Text_01.value = kappa; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | // | ||
− | |||
− | + | draw_1(); draw_2(); | |
− | |||
− | |||
− | + | // Отображение | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
function draw_1() | function draw_1() | ||
{ | { | ||
// Расчет параметров графики | // Расчет параметров графики | ||
− | y_min = y_min_1; | + | const y_min = y_min_1; |
− | y_max = y_max_1; | + | const y_max = y_max_1; |
− | sy = Y_max / (y_max - y_min); | + | const N = X_max; // число точек по оси x |
− | Y0 = Y_max + y_min * sy; | + | const dx = x_max / N; // шаг по оси x |
+ | const sx = X_max / x_max; // масштаб по оси x | ||
+ | const sy = Y_max / (y_max - y_min); // масштаб по оси y | ||
+ | const Y0 = Y_max + y_min * sy; // положение 0 оси y в экранных координатах | ||
− | context = canvas_1.getContext("2d"); | + | var context = canvas_1.getContext("2d"); // на context происходит рисование |
− | context.clearRect(0, 0, X_max, Y_max); | + | context.clearRect(0, 0, X_max, Y_max); // очистить экран |
// Горизонтальная ось | // Горизонтальная ось | ||
Строка 149: | Строка 136: | ||
context.fillText("-D", 3, Y0 + D * sy - 5); | context.fillText("-D", 3, Y0 + D * sy - 5); | ||
− | + | // График (потенциал Леннарда-Джонса) | |
− | + | context.strokeStyle = 'black'; | |
− | + | context.beginPath(); | |
+ | for (var x = x_min; x < x_max; x+=dx) | ||
+ | { | ||
+ | var y = U_LJ(x); | ||
+ | |||
+ | var X = x * sx; | ||
+ | var Y = Y0 - y * sy; | ||
+ | |||
+ | if (x == x_min) context.moveTo(X, Y); | ||
+ | else context.lineTo(X, Y); | ||
+ | } | ||
+ | context.stroke(); | ||
+ | |||
+ | // График (потенциал Морзе) | ||
+ | context.strokeStyle = 'blue'; | ||
+ | context.beginPath(); | ||
+ | for (var x = x_min; x < x_max; x+=dx) | ||
+ | { | ||
+ | var y = U_Morse(x); | ||
+ | |||
+ | var X = x * sx; | ||
+ | var Y = Y0 - y * sy; | ||
+ | |||
+ | if (x == x_min) context.moveTo(X, Y); | ||
+ | else context.lineTo(X, Y); | ||
+ | } | ||
+ | context.stroke(); | ||
} | } | ||
Строка 158: | Строка 171: | ||
// Расчет параметров графики | // Расчет параметров графики | ||
− | y_min = y_min_2; | + | const y_min = y_min_2; |
− | y_max = y_max_2; | + | const y_max = y_max_2; |
− | sy = Y_max / (y_max - y_min); | + | const N = X_max; // число точек по оси x |
− | Y0 = Y_max + y_min * sy; | + | const dx = x_max / N; // шаг по оси x |
+ | const sx = X_max / x_max; // масштаб по оси x | ||
+ | const sy = Y_max / (y_max - y_min); // масштаб по оси y | ||
+ | const Y0 = Y_max + y_min * sy; // положение 0 оси y в экранных координатах | ||
− | context = canvas_2.getContext("2d"); | + | var context = canvas_2.getContext("2d"); // на context происходит рисование |
− | context.clearRect(0, 0, X_max, Y_max); | + | context.clearRect(0, 0, X_max, Y_max); // очистить экран |
// Горизонтальная ось | // Горизонтальная ось | ||
Строка 194: | Строка 210: | ||
context.fillText("b", b * sx - 3, Y0 - 3); | context.fillText("b", b * sx - 3, Y0 - 3); | ||
context.fillText("-P", 3, Y0 + P * sy - 5); | context.fillText("-P", 3, Y0 + P * sy - 5); | ||
− | + | var dX = 0, dY = 0; | |
− | + | ||
− | + | // График (полная сила Леннарда-Джонса) | |
− | + | context.strokeStyle = 'black'; | |
− | + | context.beginPath(); | |
+ | for (var x = x_min; x < x_max; x+=dx) | ||
+ | { | ||
+ | var y = F_LJ(x); | ||
+ | |||
+ | var X = x * sx; | ||
+ | var Y = Y0 - y * sy; | ||
+ | |||
+ | if (x == x_min) context.moveTo(X, Y); | ||
+ | else context.lineTo(X, Y); | ||
+ | } | ||
+ | context.stroke(); | ||
− | + | // График (полная сила Морзе) | |
− | + | context.strokeStyle = 'blue'; | |
− | + | context.beginPath(); | |
− | + | for (var x = x_min; x < x_max; x+=dx) | |
− | + | { | |
− | + | var y = F_Morse(x); | |
− | + | ||
− | + | var X = x * sx; | |
− | + | var Y = Y0 - y * sy; | |
− | |||
− | |||
− | |||
− | |||
− | + | if (x == x_min) context.moveTo(X, Y); | |
− | + | else context.lineTo(X, Y); | |
− | + | } | |
− | } | + | context.stroke(); |
+ | } | ||
// Потенциал Морзе | // Потенциал Морзе | ||
Строка 237: | Строка 261: | ||
} | } | ||
− | // Потенциал | + | // Потенциал Леннарда-Джонса |
function U_LJ(r) | function U_LJ(r) | ||
Строка 246: | Строка 270: | ||
} | } | ||
− | // Сила | + | // Сила Леннарда-Джонса |
function F_LJ(r) | function F_LJ(r) | ||
Строка 254: | Строка 278: | ||
return P0 * s4 * s4 * (s4 * s2 - 1) * r; | return P0 * s4 * s4 * (s4 * s2 - 1) * r; | ||
} | } | ||
− | + | ||
} | } | ||
− | + | </source> | |
− | </ | ||
Файл '''"MLJ.html"''' | Файл '''"MLJ.html"''' | ||
− | < | + | <source lang="html" first-line="1"> |
<!DOCTYPE html> | <!DOCTYPE html> | ||
<html> | <html> | ||
<head> | <head> | ||
<meta charset="UTF-8" /> | <meta charset="UTF-8" /> | ||
− | <title> | + | <title>Morse & Lennard-Jones</title> |
<script src="MLJ.js"></script> | <script src="MLJ.js"></script> | ||
</head> | </head> | ||
Строка 271: | Строка 294: | ||
<canvas id="canvasGraph_2" width="800" height="300" style="border:1px solid #000000;"></canvas> | <canvas id="canvasGraph_2" width="800" height="300" style="border:1px solid #000000;"></canvas> | ||
− | + | <div> | |
− | |||
Взаимодействие: | Взаимодействие: | ||
− | + | <font color="#000000" size="5"><B>—</B></font> Леннарда-Джонса, | |
− | + | <font color="#0000ff" size="5"><B>—</B></font> Морзе<BR> | |
− | <font color="#0000ff" size="5"><B>—</B></font> | + | </div> |
− | + | ||
− | + | <!--слайдер--> | |
− | + | <div>Безразмерный параметр потенциала Морзе: | |
− | + | <input type="range" id="Slider_01" style="width: 150px;" oninput="app.set_01(this.value); document.getElementById('Text_01').value = this.value;"> | |
+ | <font face= "Times New Roman"><I>αa</I> = | ||
+ | <input id="Text_01" style="width: 4.2ex;" required pattern="[-+]?([0-9]*\.[0-9]+|[0-9]+)" oninput=" | ||
+ | // если введено не число - строка не пройдет валидацию по паттерну выше, и checkValidity() вернет false | ||
if (!this.checkValidity()) return; | if (!this.checkValidity()) return; | ||
− | app. | + | app.set_01(this.value); |
− | document.getElementById(' | + | document.getElementById('Slider_01').value = this.value; |
"> | "> | ||
− | + | </font></div> | |
− | + | <br> | |
− | + | ||
− | + | <script type="text/javascript">var app = new MainMLJ(document.getElementById('canvasGraph_1'), document.getElementById('canvasGraph_2'), | |
− | + | document.getElementById('Slider_01'), document.getElementById('Text_01'));</script> | |
− | |||
− | |||
− | |||
+ | <div style="clear:both;"></div> | ||
</body> | </body> | ||
− | </html> | + | </html> |
− | </ | + | </source> |
− | </ | + | </toggledisplay> |
− | |||
== См. также == | == См. также == | ||
− | * [[Потенциал | + | * [[Потенциал Леннарда-Джонса]] |
* [[Парные силовые потенциалы взаимодействия]] | * [[Парные силовые потенциалы взаимодействия]] | ||
[[Category: Потенциальные взаимодействия|Мо]] | [[Category: Потенциальные взаимодействия|Мо]] | ||
− |