FAQ и типичные ошибки

Расчёт не сходится / результат выглядит неправильно

Проверьте SelfConsistencySteps. Значение по умолчанию — 1: это один проход без реальной самосогласованности, годится только для быстрой отладки скрипта (проверить, что конфигурация вообще собирается и считается), не для физического результата. Для настоящего расчёта нужно и увеличить SelfConsistencySteps (10-20 обычно достаточно), и посмотреть на props.OrderParameterHistory — если Δ(z) на последних шагах ещё заметно меняется, цикл не сошёлся: увеличивайте SelfConsistencySteps либо ослабляйте OrderParameterTolerance. См. Краткий физический бэкграунд (раздел «Самосогласованный цикл»).

Изменил GridConfig, а сетка не поменялась

GridConfig — value-класс: все методы (SetZRefinement, SetERefinement, SetOmegaGrid) возвращают новый объект и не меняют исходный. Забытое присваивание — самая частая ошибка:

grid.SetERefinement(-3, 3, 60);   % ничего не изменит — результат отброшен
grid = grid.SetERefinement(-3, 3, 60);   % правильно

То же самое верно для CalculationConfig при работе с ParameterSeries — и это осознанный выбор, а не недосмотр: см. Скриптовый слой (Core/Scripting) про то, зачем конфиги — value-классы.

Проводимость не считается, хотя запрошена в Procedures

Проводимости (Conductivity) в EnergyBased нужна отдельная сетка частот ω — без вызова grid.SetOmegaGrid(start, end, n) эта процедура молча пропускается пайплайном (не бросает ошибку, чтобы не ломать расчёты, где она не нужна). См. Шаг 3. Какие величины считать.

Запросил процедуру, а функции Грина не запрошены явно — не ошибка ли это?

Нет: RepresentationRegistry.ResolveProcedureList сама молча добавляет GreenFunctions первой в список, если любая из запрошенных процедур от неё зависит. Явно указывать "GreenFunctions" в Procedures нужно, только если хотите получить именно функцию Грина как отдельный результат, а не как промежуточный шаг для чего-то другого.

Для Matsubara нет плотности состояний / части процедур

Это сегодняшнее состояние проекта, не баг: в представлении Matsubara считается только термодинамика (Δ(z), самосогласованный цикл), а спектральные величины требуют аналитического продолжения с мнимой оси на реальную, которое не реализовано. Если нужна плотность состояний — используйте EnergyBased. См. Краткий физический бэкграунд.

Задал угол в радианах, результат неправильный

MisorientationAngle_Degrees в CalculationConfig/InitialConditions задаётся в градусах — несмотря на то, что внутри солверов и в MisorientationAngle_Rad используются радианы. SpinMixingAngle (fi), наоборот, всегда в радианах. Это единственная пара полей с разными единицами — см. таблицу в Шаг 2. Все настройки конфигурации.

Хочу два независимых расчёта из одной базовой конфигурации — второй портит первый

Если конфигурация лежит в handle-объекте (например, вложена в свою структуру-обёртку) и вы вручную мутируете общий базовый объект между запусками — оба расчёта будут ссылаться на одно и то же изменяемое состояние. CalculationConfig/GridConfig/LayerSpec сами по себе value-классы и не аляйсятся; используйте ParameterSeries.Expand для генерации набора независимых конфигураций вместо ручной мутации одной переменной в цикле. См. Шаг 4. Серии и очереди расчётов.

При сохранении результата поля gap/lastStep пустые

Если вы видите это в собственном коде поверх CalculatedPhysicalProperties — проверьте, что читаете свойства именно через объект (isprop-подобная логика), а не как обычный struct (isfield). Аналогичная ошибка ранее была в самом SaverCalculation (перепутаны isfield/isprop для классового объекта) и исправлена в ядре — если используете версию до этого исправления, обновите коммит Metatron (см. Ветки и обновление ядра).

Изменения в Metatron (submodule) не видны после git pull в Metatron-Research

Submodule обновляется не автоматически при git pull родительского репозитория — нужен отдельный шаг. См. Ветки и обновление ядра (раздел «Как обновить ядро в Metatron-Research»).

Хочу добавить свой материал/представление — обязательно править ядро?

Нет — для этого есть MaterialRegistry.Register(...) / RepresentationRegistry.Register(...), вызываемые из вашего Metatron-Research без единой правки файлов Metatron. См. Варианты расширения и Шаг 7. Расширение без правки ядра.