Скриптовый слой (Core/Scripting)

Единственная часть ядра, рассчитанная на использование извне (см. Metatron (ядро)). Пошаговое руководство «как этим пользоваться» — в главе Как писать скрипты расчёта; здесь — карта классов и как они связаны между собой.

Core/Scripting/
├── Config/
│   ├── CalculationConfig.m   - декларация расчёта целиком
│   ├── GridConfig.m          - декларация сетки, representation-агностична
│   └── LayerSpec.m           - описание слоя (задел на многослойность)
├── Registry/
│   ├── MaterialRegistry.m       - имя материала -> конструктор
│   └── RepresentationRegistry.m - имя представления -> набор функций
├── CalculationBuilder.m   - CalculationConfig -> Calculation (без запуска)
├── CalculationRunner.m    - сборка + запуск (+ сохранение)
├── ParameterSeries.m      - CalculationConfig -> массив CalculationConfig
├── CalculationQueue.m     - очередь конфигураций, Save/Load между сессиями
├── SeriesManifest.m       - текстовый manifest.txt для папки серии
├── SeriesLoader.m         - загрузка сохранённой серии обратно в память
└── Plotting/
    └── CalculationPlotter.m - базовые графики физических величин по Calculation

Почему конфиги — value-классы

CalculationConfig, GridConfig, LayerSpecvalue-классы (без < handle), в отличие от Calculation и классов физической модели. Это осознанный выбор: ParameterSeries.Expand и CalculationQueue работают с массивами независимых вариантов одной базовой конфигурации. Будь они handle-классами, все варианты остались бы ссылками на один и тот же объект, и правка одного поля в одном варианте тихо изменила бы все остальные.

Как классы связаны между собой

CalculationConfig ──Expand (варьирование)──▶ [CalculationConfig, ...]
       │                                            │
       │ Build                                      │ AddMany
       ▼                                            ▼
  Calculation                              CalculationQueue ──RunAll──▶ ...
       │ (через RunPipeline)                        │
       ▼                                            │ (каждый элемент)
CalculatedPhysicalProperties                        ▼
       │                                    CalculationRunner.Run
       │ SaveOptions                                │
       ▼                                            ▼
SaverCalculation (файлы) ◀── SeriesManifest.Write ──┘
       │ (позже, в т.ч. в новой сессии)
SeriesLoader.Load ──▶ [{Calculation, OrderParameter, ...}, ...]
       │ (тот же Calculation - сразу после Run или после Load)
CalculationPlotter.PlotXxx(calculation, ...) ──▶ figure/axes

CalculationBuilder и CalculationRunner не знают о представлении (EnergyBased/Matsubara) напрямую — они спрашивают RepresentationRegistry, как для конкретного cfg.Representation построить начальные условия, адаптировать сетку и какой пайплайн запускать. Это и есть точка расширения для нового представления (см. Варианты расширения).

CalculationPlotter

Статический класс, набор функций PlotXxx(calculation, 'Axes', ax) - базовый, представление-агностичный слой визуализации (см. Шаг 6. Построение графиков за примерами). Каждая функция сама берёт сетку из calculation.InitialConditions.Split и нужное поле из calculation.CalculatedPhysicalProperties - вызывающему не нужно знать внутреннее устройство Calculation.

Метод

Зачем

PlotOrderParameter, PlotOrderParameterHistory

Δ(z) и сходимость по итерациям - работают для любого представления

PlotDensityOfStates, PlotSpinResolvedDensityOfStates, PlotMagnetization, PlotConductivity

EnergyBased-специфичные величины; если нужное поле не посчитано (расчёт не запущен, процедура не входила в cfg.Procedures, нет сетки ω) - понятная ошибка вместо пустого графика

Своя стилизация под конкретную статью/задачу - на уровне Metatron-Research, поверх этих базовых функций (см. Варианты расширения), не в самом CalculationPlotter.

Дальше — по шагам, с примерами: Как писать скрипты расчёта.