Редактирование: Совершенствование алгоритмов численного моделирования в методе динамики частиц

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

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
== Цель ==
+
== Задача ==
  
 +
* ...
 +
 +
'''Цели''':
 
* Создание программы на базе существующего кафедрального программного пакета по молекулярно-динамическому расчёту для
 
* Создание программы на базе существующего кафедрального программного пакета по молекулярно-динамическому расчёту для
 
** Молекулярно-динамическое моделирования кипящего слоя
 
** Молекулярно-динамическое моделирования кипящего слоя
Строка 9: Строка 12:
 
'''Замечание''':
 
'''Замечание''':
 
* Ниже приведены приёмы и методы, уже запрограммированные и активно отлаживающиеся в настоящее время.
 
* Ниже приведены приёмы и методы, уже запрограммированные и активно отлаживающиеся в настоящее время.
 
== Подробнее о задачах ==
 
 
...
 
[[Файл:карст.png|400px]]
 
  
 
== Построение модифицированного метода Рунге-Кутты 4 порядка ==
 
== Построение модифицированного метода Рунге-Кутты 4 порядка ==
Строка 27: Строка 25:
 
<math> k_1=\Delta t f(x_n,t_n ) </math>
 
<math> k_1=\Delta t f(x_n,t_n ) </math>
  
<math> k_2=\Delta t f(x_n+k_1/2,t_n+\Delta t/2) </math>
+
<math> k_2=\Delta t f(x_n+k_1/2,t_n+Δt/2) </math>
  
<math> k_3=\Delta t f(x_n+k_2/2,t_n+\Delta t/2) </math>
+
<math> k_3=\Delta t f(x_n+k_2/2,t_n+Δt/2) </math>
  
<math> k_4=\Delta t f(x_n+k_3,t_n+\Delta t) </math>
+
<math> k_4=\Delta t f(x_n+k_3,t_n+Δt) </math>
  
 
<math> x_{n+1}=x_n+1/6 (k_1+2k_2+2k_3+k_4 )  \ \ (2) </math>
 
<math> x_{n+1}=x_n+1/6 (k_1+2k_2+2k_3+k_4 )  \ \ (2) </math>
Строка 39: Строка 37:
 
Ниже приводится модификация метода Рунге-Кутты 4 порядка, где с помощью одного хитрого приёма удаётся избежать многократного вычисления функцию <math> f(x,t) </math> на одном временном шаге и в то же время сохранить высокий порядок по времени.
 
Ниже приводится модификация метода Рунге-Кутты 4 порядка, где с помощью одного хитрого приёма удаётся избежать многократного вычисления функцию <math> f(x,t) </math> на одном временном шаге и в то же время сохранить высокий порядок по времени.
  
Идея заключается в разложении функций <math> f(x_n+k_i/2,t_n+\Delta t/2) </math> в ряд Тейлора в окрестности точки <math> (x_n,t_n) </math>.  
+
Идея заключается в разложении функций <math> f(x_n+k_i/2,t_n+Δt/2) </math> в ряд Тейлора в окрестности точки <math> (x_n,t_n) </math>.  
  
<math> f(x_n+k_i/2,t_n+\Delta t/2)= \frac {\partial f} {\partial x} (x_n,t_n )∙k_i/2+  \frac {\partial f} {\partial t} (x_n,t_n )  \Delta t/2 + ...  \ \ (3) </math>
+
<math> f(x_n+k_i/2,t_n+Δt/2)= \frac {\partial f} {\partial x} (x_n,t_n )∙k_i/2+  \frac {\partial f} {\partial t} (x_n,t_n )  Δt/2 + ...  \ \ (3) </math>
  
Здесь присутствуют малоприятные производные, однако, как потом окажется, с ними можно будет легко разобраться. Сколько членов в разложении нужно оставить, чтобы в схеме сохранился четвёртый порядок? – До <math> (\Delta t)^4 </math> и <math> (k_i )^4 </math> или меньше?
+
Здесь присутствуют малоприятные производные, однако, как потом окажется, с ними можно будет легко разобраться. Сколько членов в разложении нужно оставить, чтобы в схеме сохранился четвёртый порядок? – До <math> (Δt)^4 </math> и <math> (k_i )^4 </math> или меньше?
  
Для слагаемых с локальными производными по времени ответ очевиден – необходимо удерживать всё вплоть до <math> (\Delta t)^4 </math>, ибо в противном случае мы потеряем наш 4-й порядок по времени для схемы в целом. Однако для <math> k_i </math> на самом деле достаточно только первой производной.  
+
Для слагаемых с локальными производными по времени ответ очевиден – необходимо удерживать всё вплоть до <math> (Δt)^4 </math>, ибо в противном случае мы потеряем наш 4-й порядок по времени для схемы в целом. Однако для <math> k_i </math> на самом деле достаточно только первой производной.  
  
 
В случае, когда правая часть (1) не зависит явно от времени, (3) предельно упрощается.
 
В случае, когда правая часть (1) не зависит явно от времени, (3) предельно упрощается.
  
<math> f(x_n+k_i/2,t_n+\Delta t/2)=∂f/∂x (x_n,t_n )∙k_i/2 \ \ (4) </math>
+
<math> f(x_n+k_i/2,t_n+Δt/2)=∂f/∂x (x_n,t_n )∙k_i/2 \ \ (4) </math>
  
 
Данная ситуация имеет место при молекулярно-динамическом моделировании, поскольку потенциал взаимодействия, как правило, является функцией только координат и скоростей частиц.
 
Данная ситуация имеет место при молекулярно-динамическом моделировании, поскольку потенциал взаимодействия, как правило, является функцией только координат и скоростей частиц.
Строка 57: Строка 55:
 
<math> (x,t)=(v,\frac{F(r)}{m}) </math>
 
<math> (x,t)=(v,\frac{F(r)}{m}) </math>
  
<math> f(x_n+k_i/2,t_n+\Delta t/2) = (v,\frac{F(r+k_i^r/2)}{m}) = ( v+\frac {k_1^v}{2},\frac {F(r+\frac {k_1^r}{2})}{m} )= </math>
+
<math> f(x_n+k_i/2,t_n+Δt/2) = (v,\frac{F(r+k_i^r/2)}{m}) = ( v+\frac {k_1^v}{2},\frac {F(r+\frac {k_1^r}{2})}{m} )= </math>
  
 
<math> =( v+\frac {k_1^v}{2},\frac {F_n + \frac {dF}{dr} (r)  \frac{k_1^r}{2}}{m} )  \ \ (5) </math>
 
<math> =( v+\frac {k_1^v}{2},\frac {F_n + \frac {dF}{dr} (r)  \frac{k_1^r}{2}}{m} )  \ \ (5) </math>
Строка 93: Строка 91:
  
 
Существует четыре источника погрешностей результата численного метода:
 
Существует четыре источника погрешностей результата численного метода:
 
 
1) погрешность математической модели,
 
1) погрешность математической модели,
 
 
2) погрешность исходных данных,
 
2) погрешность исходных данных,
 
 
3) погрешность метода (в литературе ее также называют погрешностью обрыва),  
 
3) погрешность метода (в литературе ее также называют погрешностью обрыва),  
 
 
4) погрешность округления (машинная погрешность).
 
4) погрешность округления (машинная погрешность).
 
  
 
Каждый из этих источников по-своему специфичен и интересен, однако нас здесь будет волновать последний, четвёртый источник, связанный с несовершенством вычислительного оборудования. Главные причины больших случайных погрешностей ЭВМ:
 
Каждый из этих источников по-своему специфичен и интересен, однако нас здесь будет волновать последний, четвёртый источник, связанный с несовершенством вычислительного оборудования. Главные причины больших случайных погрешностей ЭВМ:
 
 
1) метод обрыва и округления, принятый в машине;
 
1) метод обрыва и округления, принятый в машине;
 
 
2) потеря значащих разрядов при вычитании;
 
2) потеря значащих разрядов при вычитании;
 
 
3) техническое состояние машины;
 
3) техническое состояние машины;
 
 
4) потеря разрядов при превышении допустимой разрядности  представления чисел (например, при делении на маленькие  числа).  
 
4) потеря разрядов при превышении допустимой разрядности  представления чисел (например, при делении на маленькие  числа).  
 
  
 
Проблема ошибок такого рода решается как правило заменой ЭВМ на более мощную. Однако это не единственный способ решения проблемы. Существует ряд алгоритмических приёмов, позволяющих добиться меньшей машинной погрешности, работая на прежней ЭВМ. Один из наиболее эффективных приёмов - обезразмеривание.  
 
Проблема ошибок такого рода решается как правило заменой ЭВМ на более мощную. Однако это не единственный способ решения проблемы. Существует ряд алгоритмических приёмов, позволяющих добиться меньшей машинной погрешности, работая на прежней ЭВМ. Один из наиболее эффективных приёмов - обезразмеривание.  
  
Обезразмеривание как таковое возникло намного раньше ЭВМ и вовсе не из желания сократить машинную ошибку, о которой тогда и знать не знали. Первоначально обезразмеривание было исключительно математическим приёмом, позволяющим перейти от физической задачи (в которой присутствовали физические величины, обладающие смыслом и размерностью) к абстрактной математической задаче (в которой величины - просто некоторые отвлечённые параметры функции), что давало возможность применять формальные математическое методы решения уравнений, например метод малого параметра.
+
Обезразмеривание как таковое возникло намного раньше ЭВМ и вовсе не из желания сократить машинную ошибку, о которой тогда и знать не знали. Первоначально обезразмеривание было исключительно математическим приёмом, позволяющим перейти от физической задачи (в которой присутствовали физические величины, обладающие смыслом и размерностью) к абстрактной математической задаче (в которой величины - просто некоторые отвлечённые параметры функции), что давао возможность применять формальные математическое методы решения уравнений, например метод малого параметра.
  
 
Обезразмеривание позволяет перейти от физических величин, которые могут иметь очень большие (модуль Юнга) или очень малые (постоянная Планка) по модулю значения к их безразмерным аналогам, которые порядка единиц и в крайнем случае десятков. Понятно что второй случай более предпочтителен в вычислительном плане, ибо при оперировании данными безразмерными величинами происходит гораздо более медленное накопление ошибки.
 
Обезразмеривание позволяет перейти от физических величин, которые могут иметь очень большие (модуль Юнга) или очень малые (постоянная Планка) по модулю значения к их безразмерным аналогам, которые порядка единиц и в крайнем случае десятков. Понятно что второй случай более предпочтителен в вычислительном плане, ибо при оперировании данными безразмерными величинами происходит гораздо более медленное накопление ошибки.
Строка 168: Строка 156:
 
<math> f(r_{ij} )=- \frac{\partial u}{\partial r_{ij}} </math>
 
<math> f(r_{ij} )=- \frac{\partial u}{\partial r_{ij}} </math>
  
Если в качестве потенциала взаимодействия U взять потенциал Леннард-Джонса
+
Если в качестве потенциала взаимодействия U взять потенциал Леннарда-Джонса
  
 
<math> u(r_{ij} )=d[(\frac{a}{r_{ij}} )^{12}-2(\frac{a}{r_{ij}} )^6 ]=d[(\frac{1}{R_{ij}} )^{12}-2( \frac{1}{R_{ij}} )^6 ] </math>
 
<math> u(r_{ij} )=d[(\frac{a}{r_{ij}} )^{12}-2(\frac{a}{r_{ij}} )^6 ]=d[(\frac{1}{R_{ij}} )^{12}-2( \frac{1}{R_{ij}} )^6 ] </math>
Строка 193: Строка 181:
  
 
По аналогии с Frozen Layer может быть построен и слой частиц для моделирования "граничных условий" в напряжениях.
 
По аналогии с Frozen Layer может быть построен и слой частиц для моделирования "граничных условий" в напряжениях.
 
== Быстродействие vs. Правила хорошего тона в ООП ==
 
 
...
 
 
 
[[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:

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