Документ взят из кэша поисковой машины. Адрес оригинального документа : http://wasp.phys.msu.ru/forum/lofiversion/index.php?t15101.html
Дата изменения: Unknown
Дата индексирования: Mon Apr 11 15:16:09 2016
Кодировка: Windows-1251
Студенческий форум Физфака МГУ > Численные методы
Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Численные методы
Студенческий форум Физфака МГУ > Наука физика > Есть проблема
BenGan
Всем привет!

Задачка такая, есть код программы, который теряет устойчивость, хочу из явной схемы сделать неявную то есть
рассчитать 2 временных шага и как-то сделать из них один.
Книжек на эту тему под рукой не оказалось, помгите pls советом или ссылкой.

Теперь подробнее. Численными методами моделируется молекулярная динамика молекул, взаимодействующих через потенциал Леннарда-Джонса
(в знаменатели 6 и 12 степени расстояния). В коде использован метод Рунге-Кутта какого-то высокого порядка и в целом, молекулы могут летать
по экрану довольно долго, но когда случается лобовое столкновение - сталкивающиеся молекулы "переступают" истинную точку разворота,
и, таким образом, "залезают" на дополнительную потенциальную горку, в результате нарушается з-н сохранения энергии и система самопроизвольно
нагревается.

Я вижу решение в использовании неявной схемы. Проблема в том, что код мной написан лет 10 назад, многое уже забыл, хочется переделать его
в неявную схему с минимальными трудозатратами.

SHiFT
смысла особого нет, у вас же не жесткая система, к тому же большую часть времени проводящая в почти свободном полете.
может просто доп. проверку поставить, чтоб молекулы в горку не туннелировали?
BenGan
Цитата
может просто доп. проверку поставить, чтоб молекулы в горку не туннелировали?


В смысле "руками" следить за сохранением постоянства энергии? Можно конечно, но как-то это не физично.
А по другому доп. проверку сделать не так-то просто, программа-то не знает, что она ошибочно считает.

К стати, насчет нежесткой системы - не факт, мне, например, удавалось заморозить молекулы воды. smile.gif
Только их надо сначала руками расставить в удачные положения, а потом кнопочкой отнимать энергию,
после этого они забавно колеблятся относительно неподвижных центров масс.
earl Till
Цитата(плазматик @ 9.10.2008, 1:28) *
На мой взгляд надо проосто переменный шаг интегрирования по времени организовать. При сближении пары частиц шаг автоматически постепенно уменьшать (для этого использовать контроль сохранения энергии), а потом раскручивать его обратно.

+1.
Если точность расчетов важнее производительности, можно оценить погрешность разностью результатов при данном шаге и меньшем (допустим, в 2 раза), и, в случае большой разницы, уменьшить шаг.
BenGan
Цитата
...На мой взгляд надо проосто переменный шаг...
...оценить погрешность разностью результатов...


Да, это неплохой вариант, по крайней мере относительно легко реализуемый.
Наверное, с него и начну.

Но все-таки интуиция подсказывает что с высокой нелинейностью рациональнее
бороться не уменьшением шага, а переходом к неявной схеме.

Moving Observer
Цитата(BenGan @ 9.10.2008, 8:48) *
Но все-таки интуиция подсказывает что с высокой нелинейностью рациональнее
бороться не уменьшением шага, а переходом к неявной схеме.

Я сам в студенческие годы пытался писать программы решения ОДУ (я правильно понял?), но очень быстро до меня дошло, что лучше пользоваться стандартными программами.
Загляните на сайт НИВЦ МГУ, там огромная библиотека программ.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2016 IPS, Inc.