Шаг 1. Первый скрипт

Расположение и подключение путей

Скрипты живут в Metatron-Research/Examples/ (или в подпапке под свою задачу/статью). Любой скрипт начинается с одного и того же блока — он находит корневой Namespaces.m этого репозитория и подключает и ядро, и локальные пути:

dir_ = fileparts(mfilename('fullpath'));
while ~isfile(fullfile(dir_, 'Namespaces.m'))
    parent = fileparts(dir_);
    if strcmp(parent, dir_)
        error('Namespaces.m репозитория не найден выше %s', fileparts(mfilename('fullpath')));
    end
    dir_ = parent;
end
run(fullfile(dir_, 'Namespaces.m'));

Копировать этот блок в каждый новый скрипт не обязательно вручную — проще скопировать целиком файл Examples/GettingStarted.m и менять уже содержательную часть ниже.

Минимальный расчёт

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

%% 1. Сетка
grid = GridConfig( ...
    'zStart', 0, 'zEnd', 50, 'zN', 40, ...   % координата, нм
    'eStart', -74, 'eEnd', 74, 'eN', 200);   % энергия, в единицах Δ0

%% 2. Конфигурация расчёта
cfg = CalculationConfig( ...
    'Representation', "EnergyBased", ...
    'Material', "Aluminum", ...
    'Length_nm', 50, ...
    'Temperature', 0.5, ...
    'SpinMixingAngle', 0, ...       % это "fi"
    'SelfConsistencySteps', 15);
cfg.Grid = grid;

%% 3. Запуск
calculation = CalculationRunner.Run(cfg);

props = calculation.CalculatedPhysicalProperties;
fprintf('IsComplete=%d, max|Delta(z)|=%.4g\n', ...
    props.IsComplete(), max(abs(props.OrderParameter)));

Что произошло на шаге 3 (коротко — подробнее в Скриптовый слой (Core/Scripting)):

  1. CalculationRunner.Run собирает из cfg объект Calculation (материал, слой, начальные условия, сетка) — это делает CalculationBuilder.Build внутри;

  2. запускает пайплайн (RunSFIEnergyBasedPipeline для "EnergyBased") — самосогласованный цикл, затем физические процедуры (по умолчанию — все, см. Шаг 3. Какие величины считать);

  3. если задан cfg.SaveOptions — сохраняет результат на диск (см. Шаг 5. Сохранение и загрузка результатов); в этом примере не задан, значит результат есть только в памяти, в переменной calculation.

Что смотреть в результате

calculation.CalculatedPhysicalProperties — объект со всеми посчитанными величинами (полный список — Физическая модель (Core/Model)): OrderParameter (Δ(z)), DensityOfStates, SpinResolvedDensityOfStates_Up/Down, Magnetization, FreeEnergy, ConductivityTensor.

plot(grid.Zmas, props.OrderParameter);
xlabel('z, нм'); ylabel('\Delta(z)');

Дальше