Молекулярная динамика в действии


В прошлой статье я рассказывала о молекулярной динамике, а если быть точнее о движение описываемых динамикой Гамильтона, это когда поведение атомных частиц подчиняется законам классической или квантовой механики. Сегодня я хотела бы рассказать о технической стороне моей дипломной работе, то есть о первых попытках реализации молекулярной динамике.

Напомню, что молекулярной динамикой (MД) называется метод компьютерного моделирования, где эволюция во времени ансамбля взаимодействующих атомов определяется интегрированием уравнений их движения.

Первым этапом было нужно определиться с языком программирования JavaScript или Python.

JavaScript - язык интерфейса, используемый для создания и разработки веб-сайтов, настольных приложений и игр. JavaScript работает во всех браузерах и может работать с программами, которые не размещены в Интернете. Он поддерживает как функциональные, так и объектно-ориентированные стили программирования, и в основном, это ваш подход к созданию потрясающих пользовательских интерфейсов и веб-сайтов / приложений / игр, которые выглядят супер круто.

Плюсы:

  1. обладает достаточно высокой скоростью работы и производительностью;
  2. имеет развитую инфраструктуру с большим разнообразием фреймворков и библиотек;
  3. относительно простой и рациональный;
  4. удобен при разработке интерфейсов различного программного обеспечения;
  5. кроссплатформенность;

Минусы:

  1. не читает и не загружает файлы;
  2. нет строгой типизации, поэтому обладает достаточно вольной трактовкой;
  3. свобода языка открывает возможность внедрять в его скрипты вредоносный код;

Python чрезвычайно прост в освоении и является динамичным, универсальным языком. Хотя он более популярен как язык на заднем плане, с ним можно делать практически все, что вы хотите. Разработанный с целью быть читабельным, простым и, самое главное, забавным. Python является основным языком для начинающих. Он гибкий и чрезвычайно мощный, а главное - имеет очень светлое будущее.

Плюсы:

  1.  минималистичный синтаксис
  2. большая стандартная библиотека и много дополнительных библиотек.
  3.  большой выбор фреймворков.
  4. поддерживает объектно-ориентированное программирование и другие парадигмы.

Минусы:

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

Оценив оба языка и с положительной, и отрицательной сторон, был сделан вывод, что для поставленной цели JavaScript – наилучший вариант.

Следующим этапом стоял выбор вспомогательных библиотек для реализации 3D компонентов. Среди множества библиотек было выбрано две: Three.js и Babylon.js.

Библиотека Three.js, облегчает работу с WebGL. При использовании Three.js отпадает необходимость в написании шейдеров (но возможность остается), и появляется возможность оперировать привычными понятиями. Над библиотекой работает большое количество разработчиков, поэтому она максимально проста в использовании. Моделирование графики с использованием Three.js можно сравнить со съемочной площадкой, так как у нас есть возможность оперировать такими понятиями как сцена, свет, камера, объекты и их материалы.

Babylon.js – это фреймворк с открытым исходным кодом javascript, который используется для разработки 3D-приложений / видеоигр для Интернета. Использование фреймворка Babylon.js легко для пользователей. Он содержит все необходимые инструменты для создания и управления трехмерными объектами, спецэффектами, звуками и т. д. Babylon.js является одним из самых популярных 3D игровых движков и широко используется разработчиками. Будучи 3D-библиотекой, она предоставляет встроенные функции. Эти функции помогают вам реализовать общие 3D-функции эффективными и точными способами.

Третьим этапом является написание программ по заданному алгоритму:

1.     Создать и заполнить JSON случайными значениями (координаты, масса частиц);

2.     Отрисовка сцены и частиц;

3.     Анимировать квадратичное движения частиц;

Код программы можно посмотреть на моём github.

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