О проекте¶
Metatron — программный комплекс для численного решения уравнений Узаделя (квазиклассическая теория сверхпроводимости) в слоистых структурах сверхпроводник / ферромагнитный изолятор (S-FI, FI-S-FI), в двух математических представлениях:
EnergyBased — энергетическое представление (действительные энергии, запаздывающие функции Грина, формализм Келдыша для неравновесных величин).
Matsubara — представление мнимых частот Мацубары (равновесная термодинамика).
Уравнение решается методом параметризации Риккати: краевая задача (BVP) для 16 компонент параметров Риккати на каждой частоте/энергии, самосогласованный цикл по параметру порядка Δ(z) до сходимости.
Возможности¶
Решение уравнения Узаделя методом Риккати в обоих представлениях.
Самосогласованный цикл — последовательная и параллельная (
parfor) версии.Физические наблюдаемые из решения: плотность состояний (полная и спин-разрешённая), намагниченность, свободная энергия (σ-модель), комплексная проводимость (формализм Келдыша).
Декларативный скриптовый слой (Как писать скрипты расчёта) — расчёт описывается конфигурацией, а не последовательностью ручных вызовов конструкторов.
Серии расчётов с варьированием произвольного числа параметров (декартово произведение или параллельный перебор), очереди расчётов с сохранением/загрузкой между сессиями MATLAB.
Структурированное сохранение результатов на диск (папка на серию, папка на элемент, текстовый манифест) и загрузка обратно в память для анализа и построения графиков без повторного счёта.
Расширение без правки ядра: новые материалы и новые математические представления регистрируются, а не вписываются в существующий код (см. Варианты расширения).
Архитектура: три репозитория¶
Проект специально разделён на три репозитория с разной ответственностью — подробности и инструкции по установке в Репозитории и установка, здесь только смысл разделения:
Репозиторий |
Отвечает за |
Что НЕ должно сюда попадать |
|---|---|---|
Ядро: объектная модель, солверы, пайплайны, скриптовый слой (Объектная модель ядра) |
Личные скрипты запуска расчётов, результаты, черновики статей |
|
Личные скрипты запуска расчётов, серии, визуализации, результаты для конкретных задач/статей |
Изменения физики/API — они должны попадать в Metatron, а не дублироваться здесь |
|
Вот эта документация |
Исходный код |
Ключевая идея разделения — воспроизводимость. Metatron-Research
подключает Metatron как git submodule, закреплённый на конкретном коммите.
У любого результата или графика в статье всегда можно точно узнать, на каком
состоянии ядра он посчитан, а обновление ядра — осознанное действие
(git submodule update), а не тихая подмена физики при очередном
git pull.
Варианты расширения¶
Ядро спроектировано так, чтобы типовые расширения не требовали правки уже написанного кода:
Новый материал. Наследуется от
SuperconductorPhysicalConstants(см. Физическая модель (Core/Model)) и регистрируется одной строкой:MaterialRegistry.Register("MyMaterial", @MyMaterialPhysicalConstants).Новое математическое представление (помимо EnergyBased/Matsubara). Регистрируется через
RepresentationRegistry.Register(name, entry)— нужно предоставить функции сборки начальных условий, адаптер сетки и функцию запуска пайплайна (см. Скриптовый слой (Core/Scripting)).Новая физическая процедура (аналог
SFIEnergyBasedFindMagnetizationдля другого представления или новой величины) — добавляется вProcedureMapсоответствующего представления, сразу становится доступна черезcfg.Procedures(см. Шаг 3. Какие величины считать).Многослойные структуры. Сегодня структура — всегда один слой (
SuperconductorLayer); декларативный слой уже принимает массивLayerSpec(см. Шаг 2. Все настройки конфигурации) как задел на будущее, но физическая модель многослойной структуры пока не реализована — это ближайшее направление развития ядра.
Из чего это сделано¶
Вся физика и инфраструктура — на MATLAB (classdef), без внешних
пакетов, кроме Parallel Computing Toolbox (для parfor-версий
самосогласованного цикла). Документация (эта) — Sphinx, публикуется
статическим сайтом.