Численное интегрирование уравнений движения
Метод Рунге-Кутта в таких задачах оказывается неустойчивым.
Погугли по словам "метод молекулярной динамики".
Моделирование теплового движения производится приданием частицам в начальный момент случайных скоростей по закону mv^2/2 = 3kT/2, который должен выполняться в среднем по ансамблю.
Почитать можно, например, у Калиткина в "Численных методах"
Э-э? Решается же система ОДУ, откуда ещё и шаг по х взялся.
В общем, тут вполне уместен метод Рунге-Кутта, который называется "предиктор-корректор"
Курить методы Адамса
Хуже всего, что в Рунге-Кутте и Адамсе приходится считать такие вещи кактак в этов и вся суть неявных схем. Они сложнее реализуются, зато более устойчивы.
так в этов и вся суть неявных схем. Они сложнее реализуются, зато более устойчивы.спасибо, кэп =) ток не обижайся )
Просто недавно одногруппник зашел, говорит: ты глупый что ли? не слушал что ли про неявные схемы?! я тебе сейчас википедию покажу - я его в дверь выпихал
http://en.wikipedia.org/wiki/Verlet_integration
А вообще лучше напиши, что тебе реально надо, может там ещё другие проблемы есть, или вообще лучше по-другому зайти.
В общем, тот же Верлет использует
Также непонятно, как вычислять градиент. Самое простое это так
Чтобы решение было хоть как-то устойчивым приходится брать
Несколько молекул воды могут образовывать стационарное состояние. Димер воды - существует и устойчив. Надо для больших структур построить такие устойчивые образования. И посмотреть как такие структуры будут вести себя, если учитывать тепловое движение атомов/молекул. Т.е. фактически найти температуру при которой они разваливаются.
координаты атомов задаются изначально
потенциалы взаимодействия известны
рассчитываются скорости атомов
и вычисляются положения атомов
смотрится как такая структуры ведет себя
и потом добавляется тепло kT
Порядков на 13-15.
Например, неявная схема эйлера:
Чтобы не решать систему нелинейных уравнений, вектор
PS. А почему градиент считается приближенно конечными разностями? можно же точную формулу написать, по порядку сложности разве будет намного сложнее вычисления самого потенциала? Когда я решал численно системы нелинейных уравнений, производные,взятые численно, мешались. После того, как я их заменил на точные, все стало намного лучше.
А какие потенциалы? Про это же, в общем, много чего сделано и понаписано. Есть всякие там модели воды:TIP3P, SPC, TIP4P...
Ну и в догонку вопрос как вставить в эту схемку моделирование теплового движения? У меня есть некоторые идейки, но они не выглядят убедительными...Есть несколько варивантов: термостат Nose-Hoover, термостат Berendsen или Andersen. Не очень помню чем они между собой отличаются, но непринципиально. В каком-то из них есть фиктивная частица, с которой взаимодействют все остальные, и её скорость каждый шаг меняется так, чтобы температура была постоянной. А какой-то другой рескейлит все скорости с той же целью.
Алтернативно, можно делать Ланжевеновскую (броуновскую) динамику, где на каждую частицу действует вдобавок ещё случайная сила, в зависимости от температуры. Ну это тебе не очень подходит, потому что подразумевается, что это действие растворителя, и там есть ещё параметр вязкости, который устанавливает timescale фактически.
Я бы для твоей цели вообще взял готовый пакет, например LAMMPS, там можно всё это делать. Ну или там CHARMM, AMBER или GROMACS, но они не такие гибкие.
Чтобы не решать систему нелинейных уравнений, векторСпасибо огромное! А можно немного поподробнее про это. Ты хочешь сказать, что вычисляетсянаходят приближенно явной схемой эйлера
а потом подставляют в неявную схему эйлера
Аналогично поступают с методом Рунге-Кутта. Я думаю, что тут это оправдано, поскольку точная система является нелинейной ( потенциал U - нелинейный скорее всего). Например, в линейной теории упругости так не делают - честно применяют конечно-разностный аналог линейного дифференциального оператора на неизвестном временном слое.
А какие потенциалы?Полтева-Маленкова. Смысл в том, что HyperChem и другие стандартные программы считают в закрытом виде. Используют в большинстве своем Amber. Тепло туда впихнуть очень сложно. А надо посмотреть как разные потенциалы ведут себя при учете тепла и т.д.
Аналогично поступают с методом Рунге-КуттаНу я и поступил аналогично - ничего хорошего. Чует сердце, что надо всю нелинейную схему в неявном виде расписывать...
Но я к тому, что у тебя дело в ошибке, скорее всего, а не в том, что плохая разностная схема. Схема верле у всех сходится. Не должно быть смещений на ангстремы за фемтосекунду, ну никак. Это на первом шаге так у тебя?
Может ещё ты их совсем неправильно ставишь вначале, молекулы в смысле. Поэтому большие силы получаются. Прежде чем гонять динамику можно сделать просто минимизацию (в смысле без времени и скоростей).
а почему такой потенциал выбран?
Я бы честно попробовал выписать потенциальную энергию U, а потом бы попробовал и посчитать градиент — его расчет сводится все таки к взятию производных (причем первых чему, насколько мне известно, можно и зайца научить.
Полтева-МаленковаМожешь формулу написать?
Чем больше точность, тем меньше устойчивость.
Есть еще одна тривиальная идейка. Если прога сильно завязана на скорость, то ее можно распараллелить — такие задачи, насколько я себе представляю, неплохо параллелятся при разбиения области ингегрирования по пространству (хотя проблема может вылезти, когда большая часть частиц соберется в одной области — тогда распараллеливание теряет свою ценность).
Пытаться использовать здесь какой-то самодельный примитивный метод — это изобретение велосипеда.
Это да... Согласен абсолютно.
И заголовок "Численное интегрирование уравнений движения" не совсем соотвестствует теме...
А вообще задача простая:я думаю уместно было бы начать работу над этой проблемой с создания ЭВМ!
я думаю уместно было бы начать работу над этой проблемой с создания ЭВМ!Не читери начинать надо с колеса и далее по TechTree.
MD-kMC методом неравновесной молекулярной динамики (обратный метод NEMD термостаты Берендсена использовались для поддержания теплового потока. Общая схема расчета выглядела так:
.
Интегрирование уравнений движения в MD-kMC выполняется, кажется, методом Верле. Одной из основных проблем у нас было достаточно большое время установления стационарного теплового потока в длинных листах графена. Расчеты для узкого, но длинного листа графена (1 мкм) выполнялись не меньше недели на 200 ядрах. Для моделирования межатомного взаимодействия использовался упрощенный потенциал Бреннера. Кое-что из результатов есть здесь.
Мы считали недавно теплопроводность нанотрубок и графена с помощью нашей молдинамической программы 
Интегрирование уравнений движения в MD-kMC выполняется, кажется, методом Верле. Одной из основных проблем у нас было достаточно большое время установления стационарного теплового потока в длинных листах графена. Расчеты для узкого, но длинного листа графена (1 мкм) выполнялись не меньше недели на 200 ядрах. Для моделирования межатомного взаимодействия использовался упрощенный потенциал Бреннера. Кое-что из результатов есть здесь.
метод Бимана, если хочется самому возиться с численными схемами. Вообще по методам и программам лучше почитать эту статью.
Да, еще есть
evgeshe4ka
Есть 3d задачка: в пространстве находятся частицы, между ними есть потенциал взаимодействия. Т.е. уравнений движения такие:dx/dt = v
dv/dt = a = F(x)/m = -grad(U)/m
Нереальный тупняк - как это проинтегрировать численно?! Метод Эйлера не подходит - слишком большая неустойчивость - приходится брать слишком маленький шаг по времени. Как использовать того же Рунге-Кутта в голову совершенно не приходит...
Ну и в догонку вопрос как вставить в эту схемку моделирование теплового движения? У меня есть некоторые идейки, но они не выглядят убедительными...