Скриптовый слой (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, LayerSpec — value-классы
(без < 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.
Метод |
Зачем |
|---|---|
|
Δ(z) и сходимость по итерациям - работают для любого представления |
|
EnergyBased-специфичные величины; если нужное поле не посчитано
(расчёт не запущен, процедура не входила в |
Своя стилизация под конкретную статью/задачу - на уровне
Metatron-Research, поверх этих базовых функций (см.
Варианты расширения), не в самом CalculationPlotter.
Дальше — по шагам, с примерами: Как писать скрипты расчёта.