Хрупкое взаимодействие Леннард-Джонса
Хрупкое взаимодействие Леннард-Джонса (Brittle Lennard-Jones, BLJ) определяется на основе силы взаимодействия Леннард-Джонса с применением коэффициента формы, создающего потенциальный барьер, препятствующий слипанию частиц — см. интерактивный график ниже (перемещая слайдеры, проследите влияние коэффициентов).
function MainBLJ(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 al; // alpha - параметр взаимодействия var ac; // радиус обрезания взаимодействия
var al1, ac2; // производные параметры
// Задание начальных значений параметров
set_al(1); set_ac(1.5 * 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 BLJ_flag = true;
// настройка слайдеров и текстовых полей Slider_01.min = 0; Slider_01.max = 4; Slider_01.step = 0.01; Slider_01.value = al; // значение ползунка должно задаваться после min, max и step Text_01.value = al; Slider_02.min = 1.2 * a; // лучше было бы взять acSlider.min = b, но b не кратно значению acSlider.step, что портит слайдер Slider_02.max = x_max; Slider_02.step = 0.01 * a; Slider_02.value = ac; Text_02.value = ac;
draw();
// функция, запускающаяся при перемещении слайдера this.set_01 = function(input) { set_al(input); draw(); } this.set_02 = function(input) { set_ac(input); draw(); }
// Функции, запускающиеся при изменении элементов управления
this.setCheckbox_01 = function(bool) {LJ_flag = bool; draw(); }
this.setCheckbox_02 = function(bool) {BLJ_flag = bool; draw(); }
function set_ac(value) { ac = Number(value); ac2 = ac * ac; }
function set_al(value) { al = Number(value); al1 = 1 + Math.sqrt(al / (1 + al)); }
// Отображение
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 (BLJ_flag)
{ var dX = 0, dY = 17; if (ac > 1.5) { dX = 10; 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_BLJ, BLJ_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_BLJ(r) { return k(r) * F_LJ(r); }
// 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 + al) * (1 - al1 * z2) * (1 - al1 * z2) - al;
}
// Сглаживающий коэффициент
function k1(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); }
} </syntaxhighligh> Файл "BLJ.html" <syntaxhighlight lang="html" line start="1" enclose="div"> <!DOCTYPE html> <html> <head>
<meta charset="UTF-8" /> <title>Brittle Lennard-Jones Interaction (BLJ)</title> <script src="BLJ.js"></script>
</head> <body>
<canvas id="canvasGraph" width="800" height="400" style="border:1px solid #000000;"></canvas>
Сила взаимодействия Леннард-Джонса:
— <input type="checkbox" id="checkbox_01" name="" onchange="app.setCheckbox_01(this.checked);" checked/>классическая,
—
<input type="checkbox" id="checkbox_02" name="" onchange="app.setCheckbox_02(this.checked);" checked/>хрупкая
α = <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; ">
<input type="range" id="Slider_01" style="width: 100px;" oninput="app.set_01(this.value); document.getElementById('Text_01').value = this.value;"> acut = <input id="Text_02" style="width: 4.2ex;" required pattern="[-+]?([0-9]*\.[0-9]+|[0-9]+)" oninput="
if (!this.checkValidity()) return; app.set_02(this.value); document.getElementById('Slider_02').value = this.value; "> a
<input type="range" id="Slider_02" style="width: 100px;" oninput="app.set_02(this.value); document.getElementById('Text_02').value = this.value;">
<script type="text/javascript">var app = new MainBLJ( document.getElementById('canvasGraph') );</script>
</body> </html> </syntaxhighligh> </toggledisplay>
Сила взаимодействия определяется формулой , где — сила Леннард-Джонса, — коэффициент формы:
Здесь — расстояние, на котором реализуется минимальное значение силы Леннард-Джонса (расстояние разрыва связи), — радиус обрезания взаимодействия, — положительный параметр, определяющий хрупкость взаимодействия.
Согласно определению, силы и совпадают при , следовательно, для хрупкого и исходного взаимодействий совпадают такие характеристики, как жесткость и прочность связи, расстояние разрыва связи и критическая деформация. Хрупкое взаимодействие может быть построено аналогичным образом на основе любого парного взаимодействия, для которого определено расстояние разрыва связи .
Данное взаимодействие впервые предложено в работе
- Krivtsov A.M., Pavlovskaia E.E., Wiercigroch M. Impact Fracture of Rock Materials Due to Percussive Drilling Action. Proceedings of International Conference "XXI International Congress of Theoretical and Applied Mechanics", 15 - 21 August 2004, Warsaw, Poland. (Download pdf: 417 kb).