Миллеровские индексы в кристаллографии

вопросы строения молекул и квантовой химии
Аватара пользователя
madschumacher
Сообщения: 883
Зарегистрирован: Ср авг 05, 2015 4:30 pm

Re: Миллеровские индексы в кристаллографии

Сообщение madschumacher » Ср окт 25, 2023 12:40 pm

Vit Nhoc писал(а):
Ср окт 25, 2023 8:02 am
Как я понимаю, вы тоже не знаете алгоритм, по которому можно по вектору C найти также перпендикулярные ему вектора A и B. Я спрашивал об этом алгоритме на научных форумах (mattermodeling.stackexchange.com, physicsforums.com), ответа тоже не получил, а один написал что вопрос давний и до конца не ясный.
Извините, что вмешиваюсь, но тут с математической точки зрения какая-то чушь написана. Во-первых в трёхмерном пространстве, если задан вектор C, то у него есть бесконечное множество перпендикулярных ему пар векторов A и B (представьте, что берёте один перпендикулярный вектор A и вращаете его вокруг оси, заданной вектором C, а B -- это нормаль к плоскости, заданной векторами A и C). Если у Вас заданы два вектора, скажем C и А, то третий, перпендикулярный обоим легко находится через векторное произведение [C×А]. Собственно говоря, алгоритм построения максимального ортогонального базисного набора из некотрого произвольного набора векторов тоже хорошо известен, это про ортогонализация Грамма-Шмидта. :dontknow:
И да узрел Охламон, что сие есть круть несусветная!

Аватара пользователя
Vit Nhoc
Сообщения: 1147
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Re: Миллеровские индексы в кристаллографии

Сообщение Vit Nhoc » Ср окт 25, 2023 2:16 pm

madschumacher писал(а):
Ср окт 25, 2023 12:40 pm
Извините, что вмешиваюсь,
Не извиняйтесь, мы вас пять страниц ждали.
но тут с математической точки зрения какая-то чушь написана. Во-первых в трёхмерном пространстве, если задан вектор C, то у него есть бесконечное множество перпендикулярных ему пар векторов A и B (представьте, что берёте один перпендикулярный вектор A и вращаете его вокруг оси, заданной вектором C, а B -- это нормаль к плоскости, заданной векторами A и C). Если у Вас заданы два вектора, скажем C и А, то третий, перпендикулярный обоим легко находится через векторное произведение [C×А]. Собственно говоря, алгоритм построения максимального ортогонального базисного набора из некотрого произвольного набора векторов тоже хорошо известен, это про ортогонализация Грамма-Шмидта. :dontknow:
Конечно найти _какой-нибудь_ перпендикулярный вектор несложно, но как найти такой, чтобы описывался целыми числами? Если C описан целыми числами.
Повторю свой пример, если C=(1;1;1) то возможен например такой вариант:

A 0 1 -1
B -1 1 0
C 1 1 1

Здесь A перпендикулярен C и B перпендикулярен C, но A не перпендикулярен B. Возможно, если мы построили вначале A=(0 1 -1), мы можем найти вектор B с целыми значениями, перпендикулярный обоим; но я полагаю, что такой набор A B C будет включать слишком большие векторы A/B и поэтому не передаст как следует PBC, т.е. часть информации о симметрии будет потеряна.
Поэтому я полагаю, что надо тупо перебрать все варианты A и B, чтобы найти решение. Вопрос Гесс-у: нужно ли стремиться, чтобы угол между A и B был как можно ближе к 90 градусам? Я подозреваю если не соблюдать это условие, а выбрать только условие чтобы площадь параллелограмма AB была минимальной, часто программа будет находить A и B с маленькими углами между ними (хотя нулевой угол понятно надо отбраковывать алгоритмом).

Аватара пользователя
madschumacher
Сообщения: 883
Зарегистрирован: Ср авг 05, 2015 4:30 pm

Re: Миллеровские индексы в кристаллографии

Сообщение madschumacher » Ср окт 25, 2023 3:49 pm

Vit Nhoc писал(а):
Ср окт 25, 2023 2:16 pm
Конечно найти _какой-нибудь_ перпендикулярный вектор несложно, но как найти такой, чтобы описывался целыми числами? Если C описан целыми числами.
Ну собственно, не факт, что такой существует. И нормировка на 1 не нужна? Тогда можно такое сделать: при заданном C выбрать единичный вектор n, перпендикулярный ему, и начать вращать его вокруг C. Для каждого из этих "повёрнутых" ориентаций вектора n искать, например, диофантово приближение каждого из значений рациональным числом. Ну а как вектор из рациональных чисел превратить в целочисленный уже мозгов не надо (просто надо найти наименьший общий знаменатель). При найденном целочисленном A далее появляется третий ортогональный вектор B=[A,C], и для него надо сделать аналогичную процедуру преобразования в целочисленный. Ну и поскольку это приближённая процедура, то упираться она будет в реальные критерии отсечки точности рационального (или в данном случае, целочисленного) приближения, степень неортогональности полученной тройки векторов, длину полученных векторов и прочих мелочей. Ну а поскольку я не читал эту тему (для меня кристаллы -- это нечто жуткое), то только такие общие советы могу давать. Но это (и аналогичные штуки) реализуемо алгоритмически. :dontknow:
И да узрел Охламон, что сие есть круть несусветная!

Аватара пользователя
amge
Сообщения: 2021
Зарегистрирован: Вт июл 31, 2007 11:42 am

Re: Миллеровские индексы в кристаллографии

Сообщение amge » Чт окт 26, 2023 1:17 pm

Vit Nhoc писал(а):
Ср окт 25, 2023 2:16 pm
Конечно найти _какой-нибудь_ перпендикулярный вектор несложно, но как найти такой, чтобы описывался целыми числами?
А нужно хотя бы один какой-нибудь набор? Если да, то вот, например
(x, y, z)
(y, -x, 0)
(xz, yz, -x^2-y^2)
Или с целочисленным параметром t:
(x, y, z)
(y, -x-zt, yt)
(xz+(y^2+z^2)t, y(z-tx), -x(x+zt)-y^2)

Если нужны все варианты (конечно, с ограничением на макс. число), то, вы правы, перебор. для чисел до 10 перебор практически мгновенный. Например, для вектора (1,1,1) ему будут перпендикулярны следующие перпендикулярные друг другу вектора с компонентами не больше 6:
0 1 -1
2 -1 -1

1 -1 0
1 1 -2

1 0 -1
1 -2 1

1 -3 2
5 -1 -4

1 2 -3
5 -4 -1

2 -3 1
4 1 -5

2 1 -3
4 -5 1

3 -2 -1
1 4 -5

3 -1 -2
1 -5 4
Не так уж и много (среди параллельных брался только один).

Аватара пользователя
Vit Nhoc
Сообщения: 1147
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Re: Миллеровские индексы в кристаллографии

Сообщение Vit Nhoc » Чт окт 26, 2023 4:22 pm

amge писал(а):
Чт окт 26, 2023 1:17 pm
Vit Nhoc писал(а):
Ср окт 25, 2023 2:16 pm
Конечно найти _какой-нибудь_ перпендикулярный вектор несложно, но как найти такой, чтобы описывался целыми числами?
А нужно хотя бы один какой-нибудь набор? Если да, то вот, например
(x, y, z)
(y, -x, 0)
(xz, yz, -x^2-y^2)
Или с целочисленным параметром t:
(x, y, z)
(y, -x-zt, yt)
(xz+(y^2+z^2)t, y(z-tx), -x(x+zt)-y^2)
В этих примерах у вас C-третий вектор? Т.е. если C равен например (1;1;1), то этой формулой особо не воспользуешься. Правильно я понял?

Аватара пользователя
amge
Сообщения: 2021
Зарегистрирован: Вт июл 31, 2007 11:42 am

Re: Миллеровские индексы в кристаллографии

Сообщение amge » Чт окт 26, 2023 4:48 pm

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

Кстати, эти формулы мне не очень нравятся, так как могут давать большие числа. В этом отношении брутфорс лучше.

Аватара пользователя
Vit Nhoc
Сообщения: 1147
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Re: Миллеровские индексы в кристаллографии

Сообщение Vit Nhoc » Чт окт 26, 2023 5:52 pm

Интересно получается. Значил для миллеровского индекса 1 1 1, можем иметь два варианта redefine lattice:

1)

A 0 1 -1
B -1 1 0
C 1 1 1

Изображение

2)

1 -1 0
1 1 -2
1 1 1

Изображение

Наверно лучше первый, раз он без двойки?

И заодно вопрос по Chemcraft, кто пользуется - пора сделать редактирование стиля вектора и надписи на нём? Я всё думаю, как это сделать чтобы потом не пришлось переделывать. Можно например добавить пункты меню Edit the style of latest aded vector и Edit the style of all added vectors.

Аватара пользователя
amge
Сообщения: 2021
Зарегистрирован: Вт июл 31, 2007 11:42 am

Re: Миллеровские индексы в кристаллографии

Сообщение amge » Пт окт 27, 2023 7:50 am

До кучи, может, пригодится. Привожу системы ортогональных векторов, задаваемые маленькими целыми числами (не больше 2).

Код: Выделить всё

0  1  0    0  1  1    0  2  1    2 -1 -1    2  1 -2
0  0  1    0  1 -1    0  1 -2    0  1 -1    2 -2  1
1  0  0    1  0  0    1  0  0    1  1  1    1  2  2
Вроде бы, эти пять систем - это все возможные уникальные варианты с числом не более 2 (уникальность - по отношению к простым операциям, сохраняющим ортогональность, таким как перестановка строк/столбцов и умножение вектора (строки) на -1).

Аватара пользователя
Vit Nhoc
Сообщения: 1147
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Re: Миллеровские индексы в кристаллографии

Сообщение Vit Nhoc » Пн окт 30, 2023 12:41 pm

Ну вот, я кажется сделал:

https://chemcraftprog.com/files/Chemcra ... _win64.zip

Просьба скачать и протестировать.
Сейчас у меня такой алгоритм выбора латтисных векторов по миллеровским индексам (вектору C):

1) Перебираются все варианты векторов A и B в целых числах;
2) Определяются варианты векторов A и B, такие что они оба перпендикулярны C, и не параллельны друг другу;
3) Программа всегда старается найти варианты A и B такие, чтобы максимальная цифра x,y,z в них по модулю была как можно меньше;
4) Если эта цифра одинаковая, программа старается найти такие варианты A и B, при которых площадь параллелограмма AB минимальная;
5) Если площади одинаковые, программа также пытается найти вектора A и B с углами между ними, максимально близкими к прямому.

Может быть, надо добавить опцию поменять варианты латтисных векторов, и может быть показать список вариантов, которые нашла программа?

Аватара пользователя
Vit Nhoc
Сообщения: 1147
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Re: Миллеровские индексы в кристаллографии

Сообщение Vit Nhoc » Чт ноя 02, 2023 3:30 pm

Гесс, вы тут? Ответьте пожалуйста на пару вопросов, осталось совсем немного:
1) Нужно ли добавить возможность ввести кастомные латисные векторы, если определённые автоматом оказались не самими подходящими?
2) Если да, нужно ли ещё показывать список возможных векторов A и B, перпендикулярных C?
3) Правильно ли я понимаю, что если в миллеровских индексах есть ровно один ноль, то процедура построение латтисных векторов несколько другая - нельзя просто сделать миллеровские индексы вектором C?

Ответить

Вернуться в «квантовая химия и моделирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей