Редактирование: Укороченное взаимодействие Леннард-Джонса

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
[[ТМ|Кафедра ТМ]] > [[Научный справочник]] > [[Потенциалы взаимодействия]] > [[Парные силовые потенциалы взаимодействия | Парные силовые]] > [[Укороченное взаимодействие Леннард-Джонса]]<HR>
+
<addscript src=SLJ/>  
 
+
<htmlet nocache="yes">SLJ</htmlet>
 
 
Укороченное взаимодействие Леннард-Джонса (SLJ) определяется на основе силы взаимодействия [[Потенциал Леннард-Джонса|Леннард-Джонса]] с применением коэффициента, плавно ограничивающего взаимодействие — см. интерактивный график ниже ''(перемещая слайдер проследите изменение радиуса обрезания).'' 
 
 
 
 
 
<htmlet nocache="yes">Krivtsov/SLJ_TM</htmlet>
 
<div class="mw-collapsible mw-collapsed" style="width:100%" >
 
'''Текст программы построения графиков на языке JavaScript:''' <div class="mw-collapsible-content">
 
Файл '''"SLJ.js"'''
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
// Укороченное взаимодействий Леннард-Джонса
 
// Short Lennard-Jones (SLJ) interaction
 
// Разработчик А.М. Кривцов
 
// 17.05.2014
 
// 06.11.2014 коррекция - удаление const (Цветков)
 
// Интернет: tm.spbstu.ru/SLJ
 
 
 
function MainSLJ(canvas) {
 
 
 
    // Предварительные установки
 
 
 
var X_max = canvas.width;
 
var Y_max = canvas.height;
 
 
    // Размерные параметры
 
   
 
    var a = 1.;    // длина связи
 
    var D = 1.;    // энергия связи
 
 
 
    // Расчет констант взаимодействия
 
 
 
    var b = a * Math.pow(13./7, 1./6);    // положение минимума силы Леннард-Джонса (= 1.1086834 a)
 
    var b2 = b * b;
 
    var P0 = 12 * D / a;                  // коэффициент в выражении для силы Леннард-Джонса
 
    var P = 42. / 169 * P0 / b;          // модуль минимума силы Леннард-Джонса
 
 
 
// Переменные параметры взаимодействия
 
 
var ac;  // радиус обрезания взаимодействия
 
 
 
var ac2; // квадрат ac
 
 
    // Задание начальных значений параметров
 
 
 
set_ac(1.4 * a);
 
 
 
    // Область построения графика
 
    var x_min = 0.9 * a; 
 
    var x_max = 2.5 * a;
 
    var y_min = -1.2 * P;   
 
    var y_max = 2 * P;     
 
 
 
var N = X_max;                // число точек по оси x
 
var dx = x_max / N;            // шаг по оси x
 
var sx = X_max / x_max;        // масштаб по оси x
 
 
 
var sy; // масштаб по оси y
 
var Y0;  // положение 0 оси y в экранных координатах
 
var context;  // на context происходит рисование
 
 
 
// Установка флажков чекбоксов
 
var LJ_flag = true;
 
var SLJ_flag = true;
 
 
 
    // настройка слайдеров и текстовых полей
 
 
Slider_01.min = 1.11 * a;      // лучше было бы взять acSlider.min = b, но b не кратно значению acSlider.step, что портит слайдер
 
    Slider_01.max = x_max;
 
    Slider_01.step = 0.01 * a;
 
    Slider_01.value = ac;   
 
    Text_01.value = ac;
 
 
draw();
 
 
 
    // функция, запускающаяся при перемещении слайдера
 
    this.set_01 = function(input) { set_ac(input); draw(); } 
 
   
 
// Функции, запускающиеся при изменении элементов управления
 
    this.setCheckbox_01 = function(bool) {LJ_flag = bool; draw(); }
 
this.setCheckbox_02 = function(bool) {SLJ_flag = bool; draw(); }
 
 
 
function set_ac(value)
 
{
 
ac = Number(value);
 
ac2 = ac * ac;
 
}
 
 
 
// Отображение
 
 
function draw()
 
{
 
  // Расчет параметров графики
 
 
sy = Y_max / (y_max - y_min); // масштаб по оси y
 
Y0 = Y_max + y_min * sy;  // положение 0 оси y в экранных координатах
 
 
 
context = canvas.getContext("2d");  // на context происходит рисование
 
 
 
context.clearRect(0, 0, X_max, Y_max); // очистить экран
 
       
 
        // Горизонтальная ось
 
        context.strokeStyle = 'lightgrey';
 
        context.beginPath();
 
        context.moveTo(0, Y0);
 
        context.lineTo(X_max, Y0);
 
        context.stroke();
 
 
 
        // Пунктирные линии
 
        context.beginPath();
 
        context.setLineDash([5]);
 
        context.moveTo(b * sx, Y0);
 
        context.lineTo(b * sx, Y0 + P * sy);
 
        context.lineTo(0,      Y0 + P * sy);
 
        context.stroke();
 
        context.setLineDash([0]);
 
 
 
        // Надписи
 
        context.fillStyle = 'black';
 
        context.font = "italic 20px Times";
 
        context.fillText("r", x_max * sx - 15, Y0 - 7);
 
        context.fillText("F", 5, 20);
 
        context.fillText("0", 3, Y0 - 3);
 
        context.fillStyle = 'grey';
 
        context.fillText("a", a * sx + 3, Y0 - 3);
 
        context.fillText("b", b * sx - 3, Y0 - 3);
 
        context.fillText("-P", 3, Y0 + P * sy - 5);
 
        if (SLJ_flag)
 
{
 
var dX = 13, dY = 17;
 
if (ac > 1.2)  { dX = 0; dY = 0; }       
 
if (ac > 2.38) { dX = 0;  dY = 19; }
 
context.fillText("a", ac * sx - 10 + dX, Y0 - 4 + dY);
 
context.font = "12px Times";
 
context.fillText("cut", ac * sx + dX, Y0 - 3 + dY);
 
}
 
 
// Графики сил
 
Graph(F_SLJ, SLJ_flag, 'red');
 
Graph(F_LJ, LJ_flag, 'black');
 
}
 
 
 
// Построение графика функции
 
 
function Graph(F, flag, color)
 
{
 
if (!flag) return;
 
 
context.strokeStyle = color;
 
context.beginPath();
 
for (var x = x_min; x < x_max; x+=dx)
 
{
 
var y = F(x);
 
var X = x * sx;
 
var Y = Y0 - y * sy;
 
 
 
if (Y > -Y_max) context.lineTo(X, Y); // Графика, сильно выходящяя за границы области, отключается
 
}
 
context.stroke();
 
}
 
 
    // Потенциал Леннард-Джонса
 
   
 
    function U_LJ(r)
 
    {
 
        var s2 = 1 / (r * r);
 
        var s6 = s2 * s2 * s2;
 
        return D * s6 * (s6 - 2);
 
    }   
 
 
// Сила Леннард-Джонса
 
   
 
    function F_LJ(r)
 
    {
 
        var s2 = 1 / (r * r);
 
        var s4 = s2 * s2;
 
        return P0 * s4 * s4 * (s4 * s2 - 1) * r;
 
    }
 
 
// Укороченная сила Леннард-Джонса
 
   
 
    function F_SLJ(r)
 
    {
 
        return k(r) * F_LJ(r);
 
    }
 
 
 
// Сглаживающий коэффициент
 
 
    function k(x)
 
    {
 
        if (x > ac) return 0;
 
        if (x < b) return 1;
 
 
 
        var z = (x * x - b2) / (ac2 - b2)
 
        var z2 = z * z;
 
        return (1 - z2) * (1 - z2);
 
    }
 
 
 
}
 
</syntaxhighlight>
 
Файл '''"SLJ.html"'''
 
<syntaxhighlight lang="html5" line start="1" enclose="div">
 
<!DOCTYPE html>
 
<html>
 
<head>
 
    <meta charset="UTF-8" />
 
    <title>Short Lennard-Jones Interaction (SLJ)</title>
 
    <script src="SLJ.js"></script>
 
</head>
 
<body>
 
    <canvas id="canvasGraph" width="800" height="400" style="border:1px solid #000000;"></canvas>
 
 
 
<!--Выбор графика (чекбоксы)-->
 
<div>
 
        Сила взаимодействия Леннард-Джонса:
 
<font color="#000000" size="5"><B>—</B></font>
 
<input type="checkbox" id="checkbox_01" name="" onchange="app.setCheckbox_01(this.checked);" checked/>классическая,
 
        <font color="#ff0000" size="5"><B>—</B></font>
 
<input type="checkbox" id="checkbox_02" name="" onchange="app.setCheckbox_02(this.checked);" checked/>укороченная
 
    </div>
 
 
 
    <!--Установка параметров взаимодействия (текстовые поля и слайдеры)-->
 
    <div>
 
        <font face= "Times New Roman">
 
Радиус обрезания:
 
<I>a</I><SUB>cut</SUB> = <input id="Text_01" style="width: 4.2ex;" required pattern="[-+]?([0-9]*\.[0-9]+|[0-9]+)" oninput="
 
            // если введено не число - строка не пройдет валидацию по паттерну выше, и checkValidity() вернет false
 
            if (!this.checkValidity()) return;
 
            app.set_01(this.value);
 
            document.getElementById('Slider_01').value = this.value;
 
        "><I> a</I>
 
<input type="range" id="Slider_01" style="width: 100px;" oninput="app.set_01(this.value); document.getElementById('Text_01').value = this.value;">
 
</font>
 
</div>
 
   
 
<script type="text/javascript">var app = new MainSLJ(
 
document.getElementById('canvasGraph')
 
);</script>
 
 
 
</body>
 
</html>
 
</syntaxhighlight>
 
</div>
 
</div>
 
 
 
 
 
Сила взаимодействия определяется формулой <math> F(r) = k(r)F_{LJ}(r)</math>, где <math>F_{LJ}(r)</math> — сила [[Потенциал Леннард-Джонса|Леннард-Джонса]], <math>k(r)</math> — сглаживающий коэффициент:
 
 
 
 
 
<math>
 
k(r) = \left\{
 
\begin{array}{ll}
 
1, \qquad & r\le b; \\
 
\displaystyle \left(1-\left(\frac{r^2-b^2}{a_{\rm cut}^2-b^2}\right)^2\right)^2, \qquad & b<r\le a_{\rm cut}; \\
 
0, \qquad & r > a_{\rm cut}; \\
 
\end{array}
 
\right.
 
</math>
 
 
 
 
 
<math>
 
F_{LJ} = \frac{12D}{a}\left[\left(\frac a r\right)^{13}-\left(\frac a r\right)^{7}\right].
 
</math>
 
 
 
 
 
Здесь <math>b = \sqrt[6]{\frac{13}7}\,a</math> — расстояние, на котором реализуется минимальное значение силы Леннард-Джонса (расстояние разрыва связи), <math>a_{\rm cut}</math> — радиус обрезания взаимодействия.
 
 
 
 
 
Согласно определению, силы <math>F(r)</math> и <math>F_{LJ}(r)</math> совпадают при <math>r \le b</math>, следовательно, для хрупкого и исходного взаимодействий совпадают такие характеристики, как жесткость и прочность связи, расстояние разрыва связи и критическая деформация. Хрупкое взаимодействие может быть построено аналогичным образом на основе любого парного взаимодействия, для которого определено расстояние разрыва связи <math>b</math>. Подробнее см. стр. 40 в книге
 
*[[А.М. Кривцов]]. '''[[Деформирование и разрушение твердых тел с микроструктурой]]'''. М.: [http://www.fml.ru Физматлит], 2007. 304 с.
 
 
 
 
 
Данное взаимодействие является частным случаем [[Хрупкое взаимодействие Леннард-Джонса|хрупкого взаимодействия Леннард-Джонса]].
 
 
 
 
 
== См. также ==
 
 
 
* [[Хрупкое взаимодействие Леннард-Джонса]]
 
* [[Потенциал Леннард-Джонса]]
 
 
 
[[Category: Виртуальная лаборатория|Леннард-Джонс - укороченное взаимодействие]]
 
Вам запрещено изменять защиту статьи. Edit Создать редактором

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Public Domain (см. Department of Theoretical and Applied Mechanics:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)