Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Лекция по квантовой химии 1, Self Consistent Field #76

Merged
merged 11 commits into from
Jul 29, 2021

Conversation

zimka
Copy link
Collaborator

@zimka zimka commented Jun 27, 2021

C CI будет проблема -- в коде используется python пакет для квантовых вычислений psi4. Он всем хорош (с документацией, производительный, много методов), кроме одного -- ставится он через conda вместе с бинарниками (есть сборки для win/linux). Соотвественно, через чисто pip его не поставить, а значит и через чисто poetry, как я понимаю, тоже.

@zimka
Copy link
Collaborator Author

zimka commented Jun 27, 2021

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

@SemyonSinchenko
Copy link
Collaborator

Очень круто! Материала много, я лишь по диагонали глянул, к выходным детально уже. А можно написать консольные команды для установки psi4s в окружение? Я без проблем сделаю make-file тогда и все.

@zimka
Copy link
Collaborator Author

zimka commented Jun 29, 2021

Хорошо, на выходных потыкаю. Ci сервер же на ubuntu?

@SemyonSinchenko
Copy link
Collaborator

Да, там убунта.

@SemyonSinchenko
Copy link
Collaborator

И еще одна мысль. Может разделить лекцию на две? Вме, что до SCF как "зеленую" сделать, все, что после отдельно. Просто очень много материала)

Программу курса подправим без вопросов.

\ket{\Psi(r, \theta, \phi)} = R_{nl}(r) Y_{lm} (\theta, \phi)
$

где $Y_{lm}(\theta, \phi)$ -- [сферические функции](https://en.wikipedia.org/wiki/Spherical_harmonics)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
где $Y_{lm}(\theta, \phi)$ -- [сферические функции](https://en.wikipedia.org/wiki/Spherical_harmonics)
, где $Y_{lm}(\theta, \phi)$ -- [сферические функции](https://en.wikipedia.org/wiki/Spherical_harmonics)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

поставил зпт выше, после формулы

На этом шаге мы считаем, что $\psi_B$ -- фиксированная волновая функция, и мы находим "переменную" $\psi_A$. Однако, $\psi_A$ тоже будет влиять на $\psi_B$, и записав аналогичное уравнение для частицы B, мы следующим шагом найдем новую $\psi_B$.
После изменения волновых функций каджого электрона -- мы можем заново записать их уравнения с новыми волновыми функциями, и так по кругу, пока волновые функции и их энергии не сойдутся к какому-то стабильному (самосогласованному) решению.

Все вместе это создает итеративную процедуру:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а можно ли тут сделать так, чтобы эти пункты были под абзацем, а не как новым, мб после . стоит добавить пробел?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

исправил на md список с общей табуляцией

@zimka
Copy link
Collaborator Author

zimka commented Jun 29, 2021

@SemyonSinchenko по поводу разделения -- имхо не очевидно, где провести границу на "легкую" и "сложную" часть.
До SCF, например, есть супер-урезанный вывод волновых функций для атома водорода, что не очень-то легко, а после SCF -- есть секции, где просто запускается psi4 несколько раз на разных входных данных, что не особо сложно. Но местами их менять плохо, смысла не будет.
Как вариант, можно завершить "легкую" часть после постулатов Бора -- дальше начинается уже квантмех

qmlcourseRU/book/problemsblock/quantchembasic.md Outdated Show resolved Hide resolved
Помимо фундаментальной ценности в виде лучшего понимания устройства мира, объясняющая спектр теория дает крутую возможность -- по измеренному спектру понять, что за вещество перед нами и какие процессы в нем протекают. Например, изучение спектров -- один из немногих способов узнать что-то про процессы в звездах или биологических клетках. Для совсем практиков -- спектроскопия также используется для детекции взрывчатых/ наркотических веществ в малых дозах, а полевые транзисторы (основа большинства современных вычислительные устройства) работают на основе туннельного эффекта -- квантового явления. Так что можно сказать, что квантовая механика используется сплошь и рядом!
```

Если мы перейдем в уравнении Х в сферические координаты со следующей параметризацией $\ket{\Psi(\vec{r})} = \frac{\chi(r)}{r} Y(\theta, \phi)$ и воспользуемся несколькими волшебными выводами квантмеха[1], то получим:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bibtex?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SemyonSinchenko вопрос по bibtex -- у нас все ссылки в общем references.bib?
Тут не статьи, а скорее учебники и курсы лекций в ссылках -- их туда же?

Copy link
Collaborator

@SemyonSinchenko SemyonSinchenko Jul 4, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, для единообоазия, литературу туда. Википедию можно прямо в []()

qmlcourseRU/book/problemsblock/quantchembasic.md Outdated Show resolved Hide resolved
* l -- орбитальное квантовое число, $0<=l<=n-1$
* m -- магнитное квантовое число, $-l<=m<=l$
* s -- спиновое квантовое число, $s = 0|1$ (для атома водорода оно не играет роли, т.к. электрон только один)
* $l$ -- орбитальное квантовое число, $0<=l<=n-1$
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для буквы l принято использовать \ell (курсив), так читаемее.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Исправил везде на \ell


$ | {\Psi}(X_A, X_B) |^2 = | {\Psi}(X_B, X_A) |^2 $

У этого ограничения есть два решения: либо $ {\Psi}(X_A, X_B) = {\Psi}(X_B, X_A) $ (симметричность), либо $ \Psi(X_A, X_B) = -\Psi(X_B, X_A) $ (антисимметричность).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Возможно стоит уточнить, что только два решения есть при определенных условиях (теорема спин статистики), так как в целом уравнение $ | {\Psi}(X_A, X_B) |^2 = | {\Psi}(X_B, X_A) |^2 $ решается как минимум умножением на любую фазу, не только +-1

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Как я понимаю, раз после двух перестановок (AB) + (BA) система должна вернуться в то же состояние, то фаза должна быть кратна pi/2, т.е. +1/-1.
Я здесь хотел дать какую-то интуицию, почему функция должна быть антисимметричной -- не хотелось с потолка заявлять, так что в детали вдаваться не стал.
Если есть идеи, как это сформулировать, чтоб не требовалось куда-то далеко уходить от основной темы -- давай добавлю.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так как глобальная фаза не влияет на физику, то "вернуться в то же состояние" не значит что после двух перестановок мы должны получить назад \Psi(X_A, X_B), хотя это объяснение часто используют в начальных курсах по квантам. \Psi(X_A, X_B) мы должны получить в пространственном измерении больше двух потому что там любой замкнутый путь частицы можно непрерывно стянуть в точку не приближаясь ко второй частице (в двух измерениях это не так, а в одном частицы обменять вообще невозможно).

Возможно всю историю с фермионами и бозонами лучше вынести в Note, а в основном тексте просто написать, мол есть фермионы и бозоны, у первых волновая функция меняет знак при обмене, а у вторых не меняется.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну для Note advanced лекции возможно аргумент со стягиванием и ок, вопрос уже к @SemyonSinchenko

Сослаться можно например на https://arxiv.org/abs/0707.1889 , там в 2 секции неплохое объяснение

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну для Note advanced лекции возможно аргумент со стягиванием и ок, вопрос уже к @SemyonSinchenko

Сослаться можно например на https://arxiv.org/abs/0707.1889 , там в 2 секции неплохое объяснение

А чего я сразу, вы тут лучше меня шарите :)

В целом политика такая, что в Note можно любую жесть. Ну и вообще это гибкий курс с максимальной свободой для автора.

Во-первых, легко проверить, что если поменять местами $X_A$ и $X_B$, то вся функция просто изменит знак.
Во-вторых, можно заметить, что эта формула -- определитель матрицы:
$
\begin{pmatrix}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vmatrix?

@SemyonSinchenko
Copy link
Collaborator

Как вариант, можно завершить "легкую" часть после постулатов Бора -- дальше начинается уже квантмех

Еще раз почитал - давай попробуем разделить? Просто лекция очень крутая, но большая и подробная, поэтому хотелось бы "удержать" читателя и не спугнуть размером лекции. Мне кажется можно было бы сделать даже три части:

  • Введение + Боровское решение
  • Атом водорода
  • SFT и далее

А так - еще раз спасибо, очень крутой вклад! Добавь себя пожалуйста в список основных авторов тут: https://github.com/SemyonSinchenko/qmlcourse/blob/master/qmlcourseRU/book/authors.md

@meandmytram
Copy link
Collaborator

Супер топ!

nsmarkova and others added 4 commits July 8, 2021 00:44
Скорректировала орфографию, немного скорректировала формулировки.
Co-authored-by: Evgeniy Zheltonozhskiy <zheltonozhskiy@gmail.com>
Co-authored-by: Evgeniy Zheltonozhskiy <zheltonozhskiy@gmail.com>
@vvssttkk
Copy link
Member

@zimka можешь пж присоединить к этому pr твой issue?

@zimka zimka linked an issue Jul 25, 2021 that may be closed by this pull request
@zimka
Copy link
Collaborator Author

zimka commented Jul 25, 2021

Разделил лекцию на короткое интро попроще, и остальную часть. Вынес ссылки в bibtex.
Остается проблема с исполнением кода psi4, пока не нашел простого способа кроме conda, но еще посмотрю

@SemyonSinchenko
Copy link
Collaborator

Разделил лекцию на короткое интро попроще, и остальную часть. Вынес ссылки в bibtex.
Остается проблема с исполнением кода psi4, пока не нашел простого способа кроме conda, но еще посмотрю

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

@vvssttkk
Copy link
Member

@SemyonSinchenko порешай конфликтный файл пж

Перенес изменения из Team в README

Conflicts:
- Team.md
@SemyonSinchenko
Copy link
Collaborator

@SemyonSinchenko порешай конфликтный файл пж

По факту я все равно делаю git checkout, git merge, решаю конфликт и делаю push (кмк тут не зависит от прав, в веб-морде гита это делать все равно неудобно).

@SemyonSinchenko SemyonSinchenko merged commit b058c7d into master Jul 29, 2021
Copy link
Member

@vvssttkk vvssttkk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SemyonSinchenko порешай конфликтный файл пж

По факту я все равно делаю git checkout, git merge, решаю конфликт и делаю push (кмк тут не зависит от прав, в веб-морде гита это делать все равно неудобно).

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

e_in_ht_h = psi4.energy('scf', molecule=h_mol)
print(f"Hydrogen ground state energy: {e_in_ev(e_in_ht_h)} eV")
```
Здесь мы задали явно координаты обоих атомов водорода в молекуле, и энергия электронов была высчитана в предположении, что ядра водородов неподвижны. Здесь расстояние в 0.74А -- взято из [экспериментальных данных](https://cccbdb.nist.gov/exp2x.asp?casno=1333740&charge=0). Если бы мы зададим неправильные координаты, то рассчитанная энергия окажется неверной (точнее, она соответствовала бы нефизичной ситуации, когда неведомая сила "удерживает" ядра водорода на месте).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Здесь мы задали явно координаты обоих атомов водорода в молекуле, и энергия электронов была высчитана в предположении, что ядра водородов неподвижны. Здесь расстояние в 0.74А -- взято из [экспериментальных данных](https://cccbdb.nist.gov/exp2x.asp?casno=1333740&charge=0). Если бы мы зададим неправильные координаты, то рассчитанная энергия окажется неверной (точнее, она соответствовала бы нефизичной ситуации, когда неведомая сила "удерживает" ядра водорода на месте).
Здесь мы задали явно координаты обоих атомов водорода в молекуле, и энергия электронов была высчитана в предположении, что ядра водородов неподвижны. Расстояние в 0.74А взято из [экспериментальных данных](https://cccbdb.nist.gov/exp2x.asp?casno=1333740&charge=0). Если бы мы задали неправильные координаты, то рассчитанная энергия окажется неверной (точнее, она соответствовала бы нефизичной ситуации, когда неведомая сила "удерживает" ядра водорода на месте).

print(f"Hydrogen molecule, optimized ground state energy: {e_in_ev(e_in_ht_h_optimized)} eV")

```
Для некорректной геометрии получилась завышенная энергия, а после оптимизации -- почти что такая же энергию, как при вычислении с фиксированным растоянием 0.74. В оптимальном состоянии энергия системы должна быть минимальна, так что результаты вполне разумны.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Для некорректной геометрии получилась завышенная энергия, а после оптимизации -- почти что такая же энергию, как при вычислении с фиксированным растоянием 0.74. В оптимальном состоянии энергия системы должна быть минимальна, так что результаты вполне разумны.
Для некорректной геометрии получилась завышенная энергия, а после оптимизации -- почти что такая же энергия, как при вычислении с фиксированным растоянием 0.74. В оптимальном состоянии энергия системы должна быть минимальна, так что результаты вполне разумны.

- как устроен метод Self-Consistent Field для вычисления волновых функций и энергии для задачи многих тел
- как пользоваться SCF в python пакете psi4

В примерах мы везде вычисляли ground state энергию, но, конечно, зная волновые функции, можно посчитать много чего еще. Например, можно вычислить спектр поглощения и энергию ионизации (энергии возбужденных состояний), моделировать взаимодействие молекул (найти равновесное состояние для двух систем), с помощью плагинов можно смоделировать рассеяния рентгена молекуле... Квантовая механика постулирует, что любая измеримая величиная является усреднением определенного оператора по волновой функции, поэтому возможности ограничены в основном вычислительной сложностью, а не теорией.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

точно «молекуле»?

@vvssttkk
Copy link
Member

@SemyonSinchenko а ты точно уверен что можно уже вливать в master?

@SemyonSinchenko
Copy link
Collaborator

SemyonSinchenko commented Jul 29, 2021

а ты точно уверен что можно уже вливать в master?

Несколько дней висел, думал уже все посмотрели. Ссори, я сейчас аккуратно вынесу твои правки в отдельную ветку.

@vvssttkk
Copy link
Member

а ты точно уверен что можно уже вливать в master?

Несколько дней висел, думал уже все посмотрели. Ссори, я сейчас аккуратно вынесу твои правки в отдельную ветку.

суть не в моих правках, возможно автор ещё что-то хотел добавить или что-то иное

@SemyonSinchenko
Copy link
Collaborator

суть не в моих правках, возможно автор ещё что-то хотел добавить или что-то иное

Я ориентировался на его коммент 4 дня назад, соотв вынес задачу про psi4 и смержил. Го в слаке обсудим этот вопрос, кажется я что-то делаю не так.

@vvssttkk vvssttkk deleted the lecture_qc_scf branch August 4, 2021 17:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Лекция по квантовой химии
6 participants