Шаг 2. Все настройки конфигурации¶
CalculationConfig и GridConfig — value-классы (см.
Скриптовый слой (Core/Scripting) про то, почему это важно для серий).
Конструктор обоих — пары имя-значение; всё, что не указано, берёт значение
по умолчанию.
CalculationConfig¶
Поле |
По умолчанию |
Смысл |
|---|---|---|
|
|
имя задачи; пусто → генерируется как
|
|
|
|
|
|
ключ |
|
|
толщина слоя, нм |
|
|
К; должна быть меньше критической температуры материала |
|
|
угол спинового смешивания на границе, «fi», рад |
|
|
угол разориентации намагниченности, «theta», градусы |
|
|
константа парного взаимодействия λ |
|
|
макс. число шагов самосогласования; |
|
|
порог сходимости (относительное изменение Δ(z) между шагами) |
|
|
константа неупругого рассеяния ν |
|
|
|
|
пусто |
задел на многослойность (см. Шаг 7. Расширение без правки ядра); при пустом значении
структура строится из |
|
пустой |
расчётная сетка, см. ниже — обязателен для сборки |
|
пусто |
какие физические величины считать; пусто = всё по умолчанию, см. Шаг 3. Какие величины считать |
|
|
|
|
пусто |
куда и как сохранять результат, см. Шаг 5. Сохранение и загрузка результатов |
GridConfig¶
Поле / метод |
Смысл |
|---|---|
|
координатная сетка |
|
вторая ось сетки (энергия для EnergyBased, частоты Мацубары для Matsubara — см. Физическая модель (Core/Model)) |
|
сгустить координатную сетку на |
|
то же для энергетической оси; только EnergyBased |
|
сетка частот ω для проводимости (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);