Редактирование: Потенциал Морзе

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

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
 
[[ТМ|Кафедра ТМ]] > [[Научный справочник]] > [[Потенциалы взаимодействия]] > [[Парные силовые потенциалы взаимодействия | Парные силовые]] > [[Потенциал Морзе | Морзе]]<HR>
 
[[ТМ|Кафедра ТМ]] > [[Научный справочник]] > [[Потенциалы взаимодействия]] > [[Парные силовые потенциалы взаимодействия | Парные силовые]] > [[Потенциал Морзе | Морзе]]<HR>
 
  
 
Парный силовой потенциал взаимодействия.
 
Парный силовой потенциал взаимодействия.
 
Определяется формулой:  
 
Определяется формулой:  
::<math>
+
 
 +
<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>
+
 
 +
<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>
+
<math>C = \varPi''(a) = 2\alpha^2D, \qquad b = a + \frac{\ln2}{\alpha}, \qquad P = |F(b)| = \frac{\alpha D}2.</math>
 
 
Сравнение взаимодействия Морзе с взаимодействием [[Потенциал Леннард-Джонса|Леннард-Джонса]] приведено на интерактивных графиках ниже. Показана зависимость от расстояния потенциала <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>, отмеченные на графиках, соответствуют потенциалу Леннард-Джонса.
 
  
<htmlet nocache="yes">Krivtsov/MLJ_TM</htmlet>
+
Сравнение взаимодействия Морзе с взаимодействием [[Потенциал Леннарда-Джонса|Леннарда-Джонса]] приведено на интерактивных графиках ниже. Показана зависимость от расстояния потенциала <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>C = \varPi''(a)</math>. При увеличении <math>\alpha a</math> ширина потенциальной ямы для взаимодействия Морзе уменьшается, взаимодействие становится более жестким и хрупким. Уменьшение <math>\alpha a</math> приводит к противоположным изменениям — потенциальная яма расширяется, жесткость падает.  
+
Из графиков видно, что при <math>\alpha a = 6</math> графики, характеризующие взаимодействие Морзе и Леннарда-Джонса, близки. В частности, в этом случае для них совпадает жесткость связи <math>C = \varPi''(a)</math>. При увеличении <math>\alpha a</math> ширина потенциальной ямы для взаимодействия Морзе уменьшается, взаимодействие становится более жестким и хрупким. Уменьшение <math>\alpha a</math> приводит к противоположным изменениям — потенциальная яма расширяется, жесткость падает.  
  
<div class="mw-collapsible mw-collapsed" style="width:100%" >
+
''Текст программы построения графиков на языке JavaScript:'' <toggledisplay status=hide showtext="Показать↓" hidetext="Скрыть↑" linkstyle="font-size:default">  
'''Текст программы построения графиков на языке JavaScript:''' <div class="mw-collapsible-content">
 
 
Файл '''"MLJ.js"'''
 
Файл '''"MLJ.js"'''
<syntaxhighlight lang="javascript" line start="1" enclose="div">
+
<source lang="javascript" first-line="1">
// Сравнение взаимодействий Морзе и Леннард-Джонса  
+
// Сравнение взаимодействий Морзе и Леннарда-Джонса
// Разработчики А.М. Кривцов и Д.В. Цветков
+
// Разработчик А. М. Кривцов
// 16.05.2014
+
// 02.05.2014
// 06.11.2014 коррекция - удаление const (Цветков)
 
 
// Интернет: tm.spbstu.ru/Morse
 
// Интернет: tm.spbstu.ru/Morse
  
function MainMorse(canvas_1, canvas_2) {
+
function MainMLJ(canvas_1, canvas_2, Slider_01, Text_01) {
  
 
     // Предварительные установки
 
     // Предварительные установки
  
var X_max = canvas_1.width;
+
const X_max = canvas_1.width;
  var Y_max = canvas_1.height;
+
  const Y_max = canvas_1.height;
 
 
 
     // Размерные параметры
 
     // Размерные параметры
 
      
 
      
     var a = 1.;    // длина связи
+
     const a = 1.;    // длина связи
     var D = 1.;    // энергия связи
+
     const D = 1.;    // энергия связи
  
 
     // Расчет параметров взаимодействия
 
     // Расчет параметров взаимодействия
  
     var b = a * Math.pow(13./7, 1./6);    // положение минимума силы Леннард-Джонса (= 1.1086834 a)
+
     const b = a * Math.pow(13./7, 1./6);    // положение минимума силы Леннарда-Джонса (= 1.1086834 a)
     var b2 = b * b;
+
     const b2 = b * b;
     var P0 = 12 * D / a;                  // коэффициент в выражении для силы Леннард-Джонса
+
     const P0 = 12 * D / a;                  // коэффициент в выражении для силы Леннарда-Джонса
     var P = 42. / 169 * P0 / b;          // модуль минимума силы Леннард-Джонса
+
     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 - число кадров в секунду (качество отображения)
  
 
     // Область построения графика
 
     // Область построения графика
     var x_min = 0.3 * a;   
+
     const x_min = 0.1 * a;   
     var x_max = 2.5 * a;
+
     const x_max = 2.5 * a;
     var y_min_1 = -1.5 * D;     
+
     const y_min_1 = -1.5 * D;     
     var y_min_2 = -1.5 * P;     
+
     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();
 +
}
  
     var y_max_1 = -y_min_1;   
+
     // настройка слайдеров и текстовых полей
    var y_max_2 = -y_min_2;   
+
    Slider_01.min = 2;       // лучше было бы взять Slider_01.min = b, но b не кратно значению Slider_01.step, что портит слайдер
+
     Slider_01.max = 18;
var N = X_max;                // число точек по оси x
+
     Slider_01.step = 0.1;
var dx = x_max / N;           // шаг по оси x
+
     Slider_01.value = kappa;    // значение ползунка должно задаваться после min, max и step
var sx = X_max / x_max;        // масштаб по оси x
+
     Text_01.value = kappa;
 
 
var y_min;   
 
var y_max;   
 
var sy; // масштаб по оси y
 
var Y0;  // положение 0 оси y в экранных координатах
 
var context;  // на context происходит рисование
 
 
 
// Установка флажков чекбоксов
 
var LJ_flag = true;
 
var Morse_flag = true;     
 
 
 
    Slider_02.min = 2;     
 
     Slider_02.max = 18;
 
     Slider_02.step = 0.1;
 
     Slider_02.value = kappa;    
 
    Text_02.value = kappa;
 
 
draw();
 
 
 
     // функция, запускающаяся при перемещении слайдера
 
     this.set_02 = function(input) { kappa = Number(input); draw();
 
 
      
 
      
// Функции, запускающиеся при изменении элементов управления
+
draw_1(); draw_2();
    this.setCheckbox_01 = function(bool) {LJ_flag = bool; draw(); }
 
this.setCheckbox_02 = function(bool) {Morse_flag = bool; draw(); }
 
  
// Отображение
+
    // Отображение
 
 
function draw()
 
{
 
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); // масштаб по оси y
+
const N = X_max;                // число точек по оси x
Y0 = Y_max + y_min * sy; // положение 0 оси y в экранных координатах
+
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"); // на context происходит рисование
+
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);
  
// Графики потенциалов
+
        // График (потенциал Леннарда-Джонса)
Graph(U_LJ, LJ_flag, 'grey');
+
        context.strokeStyle = 'black';
Graph(U_Morse, Morse_flag, 'magenta');
+
        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); // масштаб по оси y
+
const N = X_max;                // число точек по оси x
Y0 = Y_max + y_min * sy; // положение 0 оси y в экранных координатах
+
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"); // на context происходит рисование
+
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;
// Графики сил
+
 
Graph(F_LJ, LJ_flag, 'g');
+
        // График (полная сила Леннарда-Джонса)
Graph(F_Morse, Morse_flag, 'magenta');
+
        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';
function Graph(F, flag, color)
+
        context.beginPath();
{
+
        for (var x = x_min; x < x_max; x+=dx)
if (!flag) return;
+
        {
+
            var y = F_Morse(x);
context.strokeStyle = color;
+
           
context.beginPath();
+
            var X = x * sx;  
for (var x = x_min; x < x_max; x+=dx)
+
            var Y = Y0 - y * sy;  
{
 
var y = F(x);
 
var X = x * sx;  
 
var Y = Y0 - y * sy;  
 
  
if (Y > -Y_max) context.lineTo(X, Y); // Графика, сильно выходящяя за границы области, отключается
+
            if (x == x_min) context.moveTo(X, Y);
}
+
            else            context.lineTo(X, Y);
context.stroke();
+
        }
}
+
        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>
</syntaxhighlight>
 
 
Файл '''"MLJ.html"'''
 
Файл '''"MLJ.html"'''
<syntaxhighlight lang="html5" line start="1" enclose="div">
+
<source lang="html" first-line="1">
 
<!DOCTYPE html>
 
<!DOCTYPE html>
 
<html>
 
<html>
 
<head>
 
<head>
 
     <meta charset="UTF-8" />
 
     <meta charset="UTF-8" />
     <title>LJ & Morse Interaction</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>
<div>
 
 
         Взаимодействие:
 
         Взаимодействие:
<font color="#000000" size="5"><B>—</B></font>
+
        <font color="#000000" size="5"><B>—</B></font> Леннарда-Джонса,
<input type="checkbox" id="checkbox_01" name="" onchange="app.setCheckbox_01(this.checked);" checked/>Леннард-Джонса,
+
         <font color="#0000ff" size="5"><B>—</B></font> Морзе<BR>
         <font color="#0000ff" size="5"><B>—</B></font>
+
    </div>
<input type="checkbox" id="checkbox_02" name="" onchange="app.setCheckbox_02(this.checked);" checked/>Морзе:
+
 
<font face= "Times New Roman"><I>
+
    <!--слайдер-->
αa =
+
    <div>Безразмерный параметр потенциала Морзе:
<input id="Text_02" style="width: 4.2ex;" required pattern="[-+]?([0-9]*\.[0-9]+|[0-9]+)" oninput="
+
        <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.set_02(this.value);
+
             app.set_01(this.value);
             document.getElementById('Slider_02').value = this.value;
+
             document.getElementById('Slider_01').value = this.value;
 
         ">
 
         ">
<input type="range" id="Slider_02" style="width: 100px;" oninput="app.set_02(this.value); document.getElementById('Text_02').value = this.value;">
+
    </font></div>
</I></font>
+
    <br>
</div>
+
   
+
    <script type="text/javascript">var app = new MainMLJ(document.getElementById('canvasGraph_1'), document.getElementById('canvasGraph_2'),
<script type="text/javascript">var app = new MainMorse(
+
            document.getElementById('Slider_01'), document.getElementById('Text_01'));</script>
document.getElementById('canvasGraph_1'),  
 
document.getElementById('canvasGraph_2')
 
);</script>
 
  
 +
    <div style="clear:both;"></div>
 
</body>
 
</body>
</html>
+
</html>  
</syntaxhighlight>
+
</source>
</div>
+
</toggledisplay>
</div>
 
  
 
== См. также ==
 
== См. также ==
* [[Потенциал Леннард-Джонса]]
+
* [[Потенциал Леннарда-Джонса]]
 
* [[Парные силовые потенциалы взаимодействия]]
 
* [[Парные силовые потенциалы взаимодействия]]
  
  
 
[[Category: Потенциальные взаимодействия|Мо]]
 
[[Category: Потенциальные взаимодействия|Мо]]
[[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:

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