Нет, не сталкивался, но я очень мало тестил.Vit Nhoc писал(а): ↑Чт сен 21, 2023 11:47 amВопрос по возможностям последней версии, которую вы протестировали. У меня сейчас вроде часто получаются отрицательные b,c,alpha и т.д., хотя в принципе координаты с ними строятся корректно. Вы с этим сталкивались?
И сталкивались ли вы с ситуацией, когда например фракционная координата атома -0.00000000001 A, в результате он обрезается, а не должен был?
Миллеровские индексы в кристаллографии
Re: Миллеровские индексы в кристаллографии
Re: Миллеровские индексы в кристаллографии
Я сейчас кажется столкнулся с одной проблемкой. Изначально я сделал пересчёт a,b,c,alpha… из трёх произвольно выбранных векторов A, B, C. Тут надо было ещё вначале повернуть эти вектора определённым образом, чтобы y и z компоненты A и z компоненты B были нулевыми, а ещё A.x, B.x и B.y были положительными. Это значит что если мы выбираем произвольные вектора через Tools/Crystallography tools/Build cells from Cartesian coordinates and 3 lattice vectors, программа также вращает всю молекулу, так что эти три вектора после вращения удовлетворяют этому условию.
Далее я попробовал взять три случайных латтисных вектора, пересчитать из них a,b,c,alpha, потом из a,b… пересчитать обратно три вектора. Оказалось что в половине случаев всё работает нормально, а в половине после полного преобразования C.z имеет противоположный знак.
Если я правильно понял, это означает, что по хорошему в кристаллографии к параметрам a,b… надо добавить ещё один бит – инвертировать ли координату Z вектора C. Но это не было сделано, потому что эти “правильные” a,b…, если этот последний бит отличается от стандартного, не только вращают молекулу, но и инвертируют, а это как бы некорректно (меняется зеркальность изомеров). Инвертирование - смена знаков всех компонент вектора. Поэтому, если пользователь задал случайные латтисные векторы, в половине случаев они будут “неправильные” (подразумевающие инверсию координат при преобразовании), и лучше сразу пользователю сказать, что так делать не надо, и если уж необходимы именно такие вектора, надо сначала молекулу и их проинвертировать.
Правильно ли я понял, что вы эту проблему упоминали в письме
Далее я попробовал взять три случайных латтисных вектора, пересчитать из них a,b,c,alpha, потом из a,b… пересчитать обратно три вектора. Оказалось что в половине случаев всё работает нормально, а в половине после полного преобразования C.z имеет противоположный знак.
Если я правильно понял, это означает, что по хорошему в кристаллографии к параметрам a,b… надо добавить ещё один бит – инвертировать ли координату Z вектора C. Но это не было сделано, потому что эти “правильные” a,b…, если этот последний бит отличается от стандартного, не только вращают молекулу, но и инвертируют, а это как бы некорректно (меняется зеркальность изомеров). Инвертирование - смена знаков всех компонент вектора. Поэтому, если пользователь задал случайные латтисные векторы, в половине случаев они будут “неправильные” (подразумевающие инверсию координат при преобразовании), и лучше сразу пользователю сказать, что так делать не надо, и если уж необходимы именно такие вектора, надо сначала молекулу и их проинвертировать.
Правильно ли я понял, что вы эту проблему упоминали в письме
С этими геометрическими преобразованиями возникают проблемы из-за того, что когда мы считаем углы через тригонометрические преобразования, часто упускается из виду знак синусов/косинусов. Например мы посчитали синус угла через координаты, далее пересчитываем косинус по формуле Пифагора; а знак косинуса при этом забыли. Поэтому в Delphi кроме арктангенса есть функция arctan2(y,x), которая находит arctan(y/x) с учётом этих моментов (от –180 до 180), и по возможности надо пользоваться именно ей. Не знаю, вдруг вам пригодится эта информация.Если просто поменять местами вектора a и b – получится неправильный порядок осей, так делать не желательно
Re: Миллеровские индексы в кристаллографии
B.x не обязан быть положительным, в остальном все правильно.Vit Nhoc писал(а): ↑Сб сен 23, 2023 12:33 pmЯ сейчас кажется столкнулся с одной проблемкой. Изначально я сделал пересчёт a,b,c,alpha… из трёх произвольно выбранных векторов A, B, C. Тут надо было ещё вначале повернуть эти вектора определённым образом, чтобы y и z компоненты A и z компоненты B были нулевыми, а ещё A.x, B.x и B.y были положительными.
Re: Миллеровские индексы в кристаллографии
Почти готово:
https://chemcraftprog.com/files/Chemcra ... _win64.zip
Просьба скачать и протестировать. Опция Crystallography tools[внизу-слева]/Redefine lattice.
Пока не до конца устранена одна проблема. Если в ячейке например у одного атома фракционная координата 0.0 а у другого 1.1, то программа может не распознать, что эти атомы эквивалентны, и может добавить их в одну ячейку. Наверно тут нужен довольно хитрый алгоритм, отсеивающий эквивалентные атомы. Вообще с cif файлами есть какие-то моменты, что при их чтении надо тоже отсеивать совпадающие атомы, я давно это делал.
Эта проблема проявляется, если например открыть файл Chemcraft/Samples/Cif/nacl.cif, далее выбрать Redefine lattice и задать:
2 1 0
0 1 0
0 0 1
Далее, если выбрать Show duplicated cell, часть атомов наложатся друг на друга. Сейчас это можно устранить, выбрав в этом же меню Increase the distance cutoff.., или выбрав Edit/Operations with atomic coordinates/Cut overlapping atoms. Во второй случае можно явно указать трешолд, т.е. минимальное допустимое расстояние между атомами.
https://chemcraftprog.com/files/Chemcra ... _win64.zip
Просьба скачать и протестировать. Опция Crystallography tools[внизу-слева]/Redefine lattice.
Пока не до конца устранена одна проблема. Если в ячейке например у одного атома фракционная координата 0.0 а у другого 1.1, то программа может не распознать, что эти атомы эквивалентны, и может добавить их в одну ячейку. Наверно тут нужен довольно хитрый алгоритм, отсеивающий эквивалентные атомы. Вообще с cif файлами есть какие-то моменты, что при их чтении надо тоже отсеивать совпадающие атомы, я давно это делал.
Эта проблема проявляется, если например открыть файл Chemcraft/Samples/Cif/nacl.cif, далее выбрать Redefine lattice и задать:
2 1 0
0 1 0
0 0 1
Далее, если выбрать Show duplicated cell, часть атомов наложатся друг на друга. Сейчас это можно устранить, выбрав в этом же меню Increase the distance cutoff.., или выбрав Edit/Operations with atomic coordinates/Cut overlapping atoms. Во второй случае можно явно указать трешолд, т.е. минимальное допустимое расстояние между атомами.
Re: Миллеровские индексы в кристаллографии
Это звучит как очень хорошая опция, не только для этого вопроса но и для cif с разупорядоченными атомами.Vit Nhoc писал(а): ↑Сб сен 30, 2023 1:53 pmили выбрав Edit/Operations with atomic coordinates/Cut overlapping atoms. Во второй случае можно явно указать трешолд, т.е. минимальное допустимое расстояние между атомами.
Re: Миллеровские индексы в кристаллографии
Сейчас опция Edit/Operations with atomic coordinates/Cut overlapping atoms позволяет выбрать трешолд, а Crystallography tools/Increase the distance cutoff использует трешолд по умолчанию 0.3 A. Стоит ли добавить в настройки возможность поменять эту цифру? И коли на то пошло, при чтении cif файлов сейчас так или иначе используется маленький трешолд (0.0001 A), стоит ли также добавить в настройки возможность его отключить или поменять?Гесс писал(а): ↑Сб сен 30, 2023 5:03 pmЭто звучит как очень хорошая опция, не только для этого вопроса но и для cif с разупорядоченными атомами.Vit Nhoc писал(а): ↑Сб сен 30, 2023 1:53 pmили выбрав Edit/Operations with atomic coordinates/Cut overlapping atoms. Во второй случае можно явно указать трешолд, т.е. минимальное допустимое расстояние между атомами.
Re: Миллеровские индексы в кристаллографии
Я вспомнил что мы с вами обсуждали симметрию кристаллов, и возможно вы не очень корректно написали раньше, что
_symmetry_equiv_pos_as_xyz
x,y,z
-y,x-y,z
-x+y,-x,z
-x,-y,z
y,-x+y,z
x-y,x,z
y,x,-z
x-y,-y,-z
-x,-x+y,-z
-y,-x,-z
-x+y,y,-z
x,x-y,-z
-x,-y,-z
y,-x+y,-z
x-y,x,-z
x,y,-z
-y,x-y,-z
-x+y,-x,-z
-y,-x,z
-x+y,y,z
x,x-y,z
y,x,z
x-y,-y,z
-x,-x+y,z
Тут наверно много раз повторяется информация, что длина расстояния C-C в разных направлениях равна 1.42031. У меня возник вопрос - наверно стоит к опции Crystallography tools/Show labels on atoms/Number in cell добавить также Crystallography tools/Show labels on atoms/Number in asymmetric unit?
Теперь давайте вернемся к графену. Как бы вы не рисовали - у вас не получится сделать ячейку меньше чем ромб от нитрида бора. Да, в ней два вроде как одинаковых углерода, но вот такая в зизни зопа (предлагаю не трогать пока симметрию внутри ячейки).
В файле, например, Chemcraft/Samples/Cif/craphene.cif уникальный атом только один - он показывается Chemcraft опцией Show assymetric unit. И при чтении файла этот углерод размножается по следующим преобразованиям, перечисленным в cif файле:если мы не используем информацию о симметрии (я предлагаю не использовать) - то да, этой информации несимметричный циф не содержит. более того равентсво этих связей это частный случай. Если вы в каждую ячейку добавите по одному кислороду то получите графеноксид формулы C2O, допустим он сидит на всех связях которые на данном рисунке горизонтальные. Здесь и сейчас (в графене) связи 7-20, 19-20 и 21-20 равной длины. А вот в графеноксиде 19-20 будет короче чем две другие, хотя сам ромб практически не изменится.
Вернуться к началу
_symmetry_equiv_pos_as_xyz
x,y,z
-y,x-y,z
-x+y,-x,z
-x,-y,z
y,-x+y,z
x-y,x,z
y,x,-z
x-y,-y,-z
-x,-x+y,-z
-y,-x,-z
-x+y,y,-z
x,x-y,-z
-x,-y,-z
y,-x+y,-z
x-y,x,-z
x,y,-z
-y,x-y,-z
-x+y,-x,-z
-y,-x,z
-x+y,y,z
x,x-y,z
y,x,z
x-y,-y,z
-x,-x+y,z
Тут наверно много раз повторяется информация, что длина расстояния C-C в разных направлениях равна 1.42031. У меня возник вопрос - наверно стоит к опции Crystallography tools/Show labels on atoms/Number in cell добавить также Crystallography tools/Show labels on atoms/Number in asymmetric unit?
Re: Миллеровские индексы в кристаллографии
Не вижу противоречия.
Минимальная ячейка (primitive cell) имеет те размеры и форму что у вас, и в ней находится два атома углерода.
Да, вы где то (я не уверен точно где, но скорее всего в строках
впрочем
То есть вы предоставяляете системе информацию о симметрии внутри ячейки. Да, это типовое поведение в цифах и вообще у кристаллографов, да и у молекулярных расчетчиков как минимум в прошлые десятилетия симметрия была весьма в цене.
Да, я писал
Насколько ассиметричный юнит (и симметрию внутри ячейки) важна периодическим расчетчикам - я не готов говорить за всех. VASP пытается чтото там с симметрией волновой функции и пр делать, но я зачастую даже с дефолтов ухожу на неучет симметрии, тупо потому как иногда стабильнее.
То есть то что у вас в примерах (кстати с именем CeO2_GO-P6 и указанием что файл был создан с 'Materials Studio', поменяли бы вы это ) - это симметричный cif. В несимметричном cif не было бы ничего про симметрию, но было бы 2 углерода.
Минимальная ячейка (primitive cell) имеет те размеры и форму что у вас, и в ней находится два атома углерода.
Да, вы где то (я не уверен точно где, но скорее всего в строках
информируете систему о симметрии внутри ячейки_symmetry_space_group_name_H-M 'P6/MMM'
_symmetry_Int_Tables_number 191
_symmetry_cell_setting hexagonal
впрочем
тоже задает второй атом в этой ячейке._symmetry_equiv_pos_as_xyz
x,y,z
...
y,x,z
...
То есть вы предоставяляете системе информацию о симметрии внутри ячейки. Да, это типовое поведение в цифах и вообще у кристаллографов, да и у молекулярных расчетчиков как минимум в прошлые десятилетия симметрия была весьма в цене.
Да, я писал
, ну я хотел не усложнять вашу задачу. Учет симметрии на програмном уровне - это ИМХО немало головной боли для разработчика.если мы не используем информацию о симметрии (я предлагаю не использовать) - то да, этой информации несимметричный циф не содержит.
Насколько ассиметричный юнит (и симметрию внутри ячейки) важна периодическим расчетчикам - я не готов говорить за всех. VASP пытается чтото там с симметрией волновой функции и пр делать, но я зачастую даже с дефолтов ухожу на неучет симметрии, тупо потому как иногда стабильнее.
То есть то что у вас в примерах (кстати с именем CeO2_GO-P6 и указанием что файл был создан с 'Materials Studio', поменяли бы вы это ) - это симметричный cif. В несимметричном cif не было бы ничего про симметрию, но было бы 2 углерода.
Re: Миллеровские индексы в кристаллографии
Так, через Redefine lattice я переиграл вектора для новой попрежнему неортогональной ячейки (при этом контринтуитивно чтобы получить утроенный вектор с пришлось ставить тройку у вектора а, а вот то что внизу показывает его размеры - это очень хорошо)
Снимок в процессе редактирования, изменяется угол альфа, следом изменится угол бета. Получил ячейку Обрезал до состояния в котором я его хочу иметь До этого места все шло ок.
Crystallography Tools > Save file with crystallography data (почему просто не сделать в нормальный Save?) - Выбираю VASP
Я сразу покажу и содержимое результирующего файла. То есть вкладка Coord корректно считает количество атомов
окно сохранения получает как имя файла корректное количество атомов
а вот в файл пишутся все атомы которые попадают в большую ячейку, то есть мое удаление слоев прошло незамеченным.
Это первоочередной запрос.
Второй запрос - очень хочется иметь возможность "project atoms into cell". То есть я бы хотел видеть примерно вот это: (Сделано довольно через жопу)
Получил ячейку
Через Show/edit crystal cell parameters сделал отрогональную (странно что могу эдитить в верхней но не в нижней части, ну да не беда)Снимок в процессе редактирования, изменяется угол альфа, следом изменится угол бета. Получил ячейку Обрезал до состояния в котором я его хочу иметь До этого места все шло ок.
Crystallography Tools > Save file with crystallography data (почему просто не сделать в нормальный Save?) - Выбираю VASP
Я сразу покажу и содержимое результирующего файла. То есть вкладка Coord корректно считает количество атомов
окно сохранения получает как имя файла корректное количество атомов
а вот в файл пишутся все атомы которые попадают в большую ячейку, то есть мое удаление слоев прошло незамеченным.
Это первоочередной запрос.
Второй запрос - очень хочется иметь возможность "project atoms into cell". То есть я бы хотел видеть примерно вот это: (Сделано довольно через жопу)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Re: Миллеровские индексы в кристаллографии
Сорри за качество, Snipping tools сохраняет вроде бы нормально, но при выгрузке сюда качество снижается. Ели это критично - я скину фотки на почту.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Re: Миллеровские индексы в кристаллографии
Если я вас правильно понял, вы удалили атомы вручную, на главном окне? Кстати вам полезно было бы выделить например все атомы, координата z которых меньше такой-то, чтобы их удалить?
Понятно что в таком варианте эта опция не работает. Сейчас меню save сохраняет не ту молекулу что на экране, а ту что хранится в памяти как данные прочитанные из cif файла (там кроме координат ещё разная информация вроде параметров ячейки).
Я могу сделать например опцию Update cif file from current molecule, она сгенерирует ещё один cif в иерархическом списке вверху-слева, и уже его вы сохраните. Вам это подойдёт?
Вообще мне хотелось бы лучше представлять, какие задачи стоят перед кристаллографистами, когда они создают cif или vasp файлы. Просьба рассказать, для чего вам потребовалось обрезать эту молекулу в ячейке.
Сейчас данную задачу можно решить например так: после того как вы обрезали молекулу, выберите Crystallography tools/Show/edit crystal cell parameters, далее кликните на Value вверху и нажмите Ctrl+C, далее зайдите в меню Tools/Crystallography tools/Build cells from Cartesian coordinates and a,b.. parameters, далее вставьте из клипбоарда ваши параметры ячейки, и создавшийся cif можно сохранить.
Тут не понял, что требуется? Спроецировать 3d молекулу на 2d плоскость?Второй запрос - очень хочется иметь возможность "project atoms into cell". То есть я бы хотел видеть примерно вот это:
Re: Миллеровские индексы в кристаллографии
И может быть пригодится опция Crystallopraphy tools[внизу слева]/Cut atoms according to current cell, т.е. отрезать атомы не влезающие в ячейку?
Re: Миллеровские индексы в кристаллографии
Да
Невредно но это единичное выделить-удалить так что я бы сказал не требуется.
Ну можно и так, не сказал бы что это интуитивно, я бы все таки сказал что интуитивно - это сохранять то что на экране.Vit Nhoc писал(а): ↑Пн окт 02, 2023 11:50 amПонятно что в таком варианте эта опция не работает. Сейчас меню save сохраняет не ту молекулу что на экране, а ту что хранится в памяти как данные прочитанные из cif файла (там кроме координат ещё разная информация вроде параметров ячейки).
Я могу сделать например опцию Update cif file from current molecule, она сгенерирует ещё один cif в иерархическом списке вверху-слева, и уже его вы сохраните. Вам это подойдёт?
Я отвечу неколько позже с бОльшим количеством ссылок и/или картинок, я бы все же сказал это не для кристаллографов а для расчетчиков в периодике - поверхностей. То есть гетерогенный катализ, computational material science, и практически что угодно где слова DFT и Surface идут рядом.
Нет. То что получилось имеет много кристаллографических координат больше 1 (или меньше 0), разумеется копии этих атомов находятся и в ячейке, но я то их не вижу, а хочу видеть "все внутри ячейки". Да, VASP примет тот файл что Chemcraft генерирует (васп сам спроецирует) и да он выдаст в аутпуте именно "все внутри ячейки" (ну или на гранях), но хотелось бы видеть "красивое" сразу из Chemcraft.
Re: Миллеровские индексы в кристаллографии
Поясните ещё раз, как именно получилось? Вы добавляли атомы стандартными средствами Chemcraft вроде Edit/Add fragment, или вы сначала размножили ячейку, потом удалили лишние атомы? Мне хотелось бы лучше представлять, как выглядит работа кристаллографиста-расчётчика.Гесс писал(а): ↑Пн окт 02, 2023 3:09 pmНет. То что получилось имеет много кристаллографических координат больше 1 (или меньше 0), разумеется копии этих атомов находятся и в ячейке, но я то их не вижу, а хочу видеть "все внутри ячейки". Да, VASP примет тот файл что Chemcraft генерирует (васп сам спроецирует) и да он выдаст в аутпуте именно "все внутри ячейки" (ну или на гранях), но хотелось бы видеть "красивое" сразу из Chemcraft.
Re: Миллеровские индексы в кристаллографии
Гесс, надеюсь дождаться вашего ответа по последнему вопросу, а сам понемногу перечитываю эту тему, чтобы понять наконец, что выводится из трёх миллеровых индексов.
Вы писали:
Вообще можно миллеровы индексы просто перевести в девять параметров redefine lattice, и использовать уже написанный код?
Возможно, если три числа миллеровых индексов задают вектор, то из этих параметров три последних (параметры C) это они же и есть? Это работает для любых миллеровских индексов, или только для таких где число нулей меньше двух?
А первые шесть параметров (для A и B) как бы неоднозначны, их можно определить по-разному, т.к. ячейку можно вращать вокруг C?
Вы писали:
Мне вначале казалось, что эти три точки справа - это параметры redefice lattice. Но видимо это я спутал?Запись 1,1,1 дает точки 1,0,0 0,1,0 0,0,1
Запись 2,1,1 дает точки 1/2,0,0 0,1,0 0,0,1
Запись 1,1,0 дает точки 1,0,0 0,1,0 1,0,1
Запись 2,0,1 дает точки 1/2,0,0 1/2,1,0 0,0,1
Запись 1,0,0 дает точки 1,0,0 1,1,0 1,0,1
Запись 0,0,2 дает точки 1,0,1/2 0,1,1/2 0,0,1/2
Запись 3,2,1 дает точки 1/3,0,0 0,1/2,0 0,0,1
Вообще можно миллеровы индексы просто перевести в девять параметров redefine lattice, и использовать уже написанный код?
Возможно, если три числа миллеровых индексов задают вектор, то из этих параметров три последних (параметры C) это они же и есть? Это работает для любых миллеровских индексов, или только для таких где число нулей меньше двух?
А первые шесть параметров (для A и B) как бы неоднозначны, их можно определить по-разному, т.к. ячейку можно вращать вокруг C?
Re: Миллеровские индексы в кристаллографии
Когда я redefine lattice я указал утроенную длину и получил утроенную ячейку.Vit Nhoc писал(а): ↑Пн окт 02, 2023 3:49 pmПоясните ещё раз, как именно получилось? Вы добавляли атомы стандартными средствами Chemcraft вроде Edit/Add fragment, или вы сначала размножили ячейку, потом удалили лишние атомы? Мне хотелось бы лучше представлять, как выглядит работа кристаллографиста-расчётчика.
Потом я переделал ее в ортографический slab.
Потом я удалил в ней атомы.
Re: Миллеровские индексы в кристаллографии
Т.е. вы ввели
3 0 0
0 3 0
0 0 3
Далее я не понял, что такое ортографический slab. Ну ладно если я вас утомил, вопрос такой: нужно ли добавить обрезание по ячейке в двух вариантах - 1) оставить только атомы с фракционными координатами от 0 до 1, и 2) пересчитать все фракционные координаты в пределы одной ячейки, т.е. координату 1.4 превратить в 0.4 и так далее.
Я привык делать интерфейс как мне кажется удобнее и интуитивнее, поэтому я наверно сделаю опцию Crystallography tools[слева внизу]/Rebuild cell according to atoms in current molecule, добавится cif в иерархический список слева-вверху, только после этого можно сохранять cif, в котором вы что-то отредактировали вроде удаления атомов.
Re: Миллеровские индексы в кристаллографии
Я ввел это:
Сорри, я с телефона и не могу повторить снимок.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость