О проекте

Metatron — программный комплекс для численного решения уравнений Узаделя (квазиклассическая теория сверхпроводимости) в слоистых структурах сверхпроводник / ферромагнитный изолятор (S-FI, FI-S-FI), в двух математических представлениях:

  • EnergyBased — энергетическое представление (действительные энергии, запаздывающие функции Грина, формализм Келдыша для неравновесных величин).

  • Matsubara — представление мнимых частот Мацубары (равновесная термодинамика).

Уравнение решается методом параметризации Риккати: краевая задача (BVP) для 16 компонент параметров Риккати на каждой частоте/энергии, самосогласованный цикл по параметру порядка Δ(z) до сходимости.

Возможности

  • Решение уравнения Узаделя методом Риккати в обоих представлениях.

  • Самосогласованный цикл — последовательная и параллельная (parfor) версии.

  • Физические наблюдаемые из решения: плотность состояний (полная и спин-разрешённая), намагниченность, свободная энергия (σ-модель), комплексная проводимость (формализм Келдыша).

  • Декларативный скриптовый слой (Как писать скрипты расчёта) — расчёт описывается конфигурацией, а не последовательностью ручных вызовов конструкторов.

  • Серии расчётов с варьированием произвольного числа параметров (декартово произведение или параллельный перебор), очереди расчётов с сохранением/загрузкой между сессиями MATLAB.

  • Структурированное сохранение результатов на диск (папка на серию, папка на элемент, текстовый манифест) и загрузка обратно в память для анализа и построения графиков без повторного счёта.

  • Расширение без правки ядра: новые материалы и новые математические представления регистрируются, а не вписываются в существующий код (см. Варианты расширения).

Архитектура: три репозитория

Проект специально разделён на три репозитория с разной ответственностью — подробности и инструкции по установке в Репозитории и установка, здесь только смысл разделения:

Репозиторий

Отвечает за

Что НЕ должно сюда попадать

Metatron

Ядро: объектная модель, солверы, пайплайны, скриптовый слой (Объектная модель ядра)

Личные скрипты запуска расчётов, результаты, черновики статей

Metatron-Research

Личные скрипты запуска расчётов, серии, визуализации, результаты для конкретных задач/статей

Изменения физики/API — они должны попадать в Metatron, а не дублироваться здесь

Metatron-Docs

Вот эта документация

Исходный код

Ключевая идея разделения — воспроизводимость. 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, публикуется статическим сайтом.