Шаг 2. Все настройки конфигурации

CalculationConfig и GridConfig — value-классы (см. Скриптовый слой (Core/Scripting) про то, почему это важно для серий). Конструктор обоих — пары имя-значение; всё, что не указано, берёт значение по умолчанию.

CalculationConfig

Поле

По умолчанию

Смысл

TaskName

""

имя задачи; пусто → генерируется как Representation_Material_ДлинаНМ

Representation

"EnergyBased"

"EnergyBased" | "Matsubara"

Material

""

ключ MaterialRegistry ("Aluminum", "Niobium", …)

Length_nm

0

толщина слоя, нм

Temperature

0

К; должна быть меньше критической температуры материала

SpinMixingAngle

0

угол спинового смешивания на границе, «fi», рад

MisorientationAngle_Degrees

0

угол разориентации намагниченности, «theta», градусы

PairingInteractionConstant

0.5

константа парного взаимодействия λ

SelfConsistencySteps

1

макс. число шагов самосогласования; 1 — быстрый однопроходный расчёт без реальной сходимости Δ(z) (годится для отладки скрипта, не для физики)

OrderParameterTolerance

1e-4

порог сходимости (относительное изменение Δ(z) между шагами)

InelasticScatteringConstant

0.02

константа неупругого рассеяния ν

IsTripleLayer

false

true → граничные условия для FI-S-FI вместо S-FI

Layers

пусто

задел на многослойность (см. Шаг 7. Расширение без правки ядра); при пустом значении структура строится из Material/Length_nm

Grid

пустой GridConfig

расчётная сетка, см. ниже — обязателен для сборки

Procedures

пусто

какие физические величины считать; пусто = всё по умолчанию, см. Шаг 3. Какие величины считать

UseParallel

false

trueparfor-версия самосогласованного цикла (нужен Parallel Computing Toolbox)

SaveOptions

пусто

куда и как сохранять результат, см. Шаг 5. Сохранение и загрузка результатов

GridConfig

Поле / метод

Смысл

zStart, zEnd, zN

координатная сетка

eStart, eEnd, eN

вторая ось сетки (энергия для EnergyBased, частоты Мацубары для Matsubara — см. Физическая модель (Core/Model))

SetZRefinement(one, second, between)

сгустить координатную сетку на [one, second]between точек там, остальные zN - between равномерно по краям

SetERefinement(one, second, between)

то же для энергетической оси; только EnergyBased

SetOmegaGrid(start, end, n)

сетка частот ω для проводимости (EnergyBased) или сетка частот Мацубары (Matsubara) — без неё проводимость для EnergyBased тихо пропускается (см. Шаг 3. Какие величины считать)

Пример с сгущением и сеткой проводимости:

grid = GridConfig('zStart', 0, 'zEnd', 1000, 'zN', 40, ...
    'eStart', -74, 'eEnd', 74, 'eN', 200);
grid = grid.SetERefinement(-3, 3, 60);   % сгустить около щели
grid = grid.SetOmegaGrid(0.05, 3, 40);   % нужно для Conductivity

cfg.Grid = grid;

Примечание

Методы GridConfig возвращают новый объект (value-класс) — писать нужно grid = grid.SetERefinement(...), а не просто grid.SetERefinement(...) без присваивания, иначе изменение потеряется.

LayerSpec

Задел на многослойность (см. Варианты расширения): Material, Length_nm, Role (строка, информационно — "S"/"FI"/…). Сегодня CalculationBuilder принимает ровно один слой и бросит понятную ошибку на массиве длиннее 1 — указывать cfg.Layers вручную пока не нужно, простого Material``+``Length_nm достаточно.

Полный пример со всеми полями

Metatron-Research/Examples/SingleRun/BasicConfigReference.m — рабочий файл, где выставлены все поля CalculationConfig с комментарием, что каждое значит, плюс SaveOptions целиком (см. Шаг 5. Сохранение и загрузка результатов). Удобно открыть его рядом и копировать нужные строки.

То же самое одним куском, без комментариев — чтобы просто скопировать и поправить значения под свою задачу:

grid = GridConfig( ...
    'zStart', 0, ...
    'zEnd', 1000, ...
    'zN', 40, ...
    'eStart', -74, ...
    'eEnd', 74, ...
    'eN', 200);
grid = grid.SetZRefinement(400, 600, 20);
grid = grid.SetERefinement(-3, 3, 60);
grid = grid.SetOmegaGrid(0.05, 3, 40);

cfg = CalculationConfig( ...
    'TaskName', "", ...
    'Representation', "EnergyBased", ...
    'Material', "Aluminum", ...
    'Length_nm', 1000, ...
    'Temperature', 0.5, ...
    'SpinMixingAngle', 0, ...
    'MisorientationAngle_Degrees', 0, ...
    'PairingInteractionConstant', 0.5, ...
    'SelfConsistencySteps', 15, ...
    'OrderParameterTolerance', 1e-4, ...
    'InelasticScatteringConstant', 0.02, ...
    'IsTripleLayer', false, ...
    'Procedures', string.empty(1,0), ...
    'UseParallel', false, ...
    'SaveOptions', struct( ...
        'OutputDir', 'C:\Results\MyStudy', ...
        'NamingPattern', 'calc_{id}', ...
        'SaveFullState', true, ...
        'SaveGreenMatrix', false, ...
        'SaveRiccatiTensor', false, ...
        'SaveOnlyLastIteration', true, ...
        'SaveGapHistory', true, ...
        'Format', 'mat', ...
        'SeparateHeavyFiles', true));

cfg.Grid = grid;

calculation = CalculationRunner.Run(cfg);