1. Infrastructure

class Logger

Bases: handle

Logger - статический класс для логирования сообщений с временными метками Использует Config.LogsFolder для хранения логов. Для каждого дня создаётся подпапка вида „yyyy_mm_dd“. Лог-файл внутри неё имеет имя „log_ИмяЗадачи.txt“ или „log_YYYYMMDD_HHMMSS.txt“, если имя задачи не задано.

Все сообщения дублируются в консоль и файл (через diary).

Методы:

Logger.Setup(taskName) - инициализация лога (создание папки, файла, diary) Logger.Info(msg) - запись информационного сообщения Logger.Error(msg) - запись сообщения об ошибке Logger.Close() - закрыть файл лога (выключить diary)

Пример:

>> Config.LogsFolder = „./MetatronTemporaryFiles“; >> Logger.Setup(„SNS_junction“); >> Logger.Info(„Начало расчёта“); >> Logger.Error(„Не удалось открыть файл“); >> Logger.Close();

Method Summary
static Close()

Close - закрыть лог-файл (выключить diary)

static Error(msg)

Error - запись сообщения об ошибке

static Info(msg)

Info - запись информационного сообщения

static Setup(taskName)

Setup - инициализировать логирование taskName - строка, идентифицирующая задачу (опционально) Создаёт папку Config.LogsFolder/yyyy_mm_dd и файл log_<taskName>.txt Если taskName не задан, имя файла формируется как log_YYYYMMDD_HHMMSS.txt

class SaverCalculation

Bases: handle

SaverCalculation – сервис для сохранения результатов расчётов. Позволяет гибко управлять тем, какие данные сохранять (GreenMatrix, RiccatiTensor, историю щели и пр.), формат файлов и именование.

Properties:

OutputDir - базовая директория для сохранения (по умолчанию „./Results“) NamingPattern - шаблон имени файла (поддерживает подстановку полей конфигурации) SaveGreenMatrix - сохранять матрицы Грина (true/false) SaveRiccatiTensor - сохранять тензор Риккати (true/false) SaveOnlyLastIteration - для GreenMatrix и RiccatiTensor сохранять только последнюю итерацию SaveGapHistory - сохранять полную историю изменения щели (массив) SaveFullState - сохранять весь объект calculation (для отладки) Format - формат файлов („mat“, „json“) – для лёгких данных SeparateHeavyFiles - если true, тяжёлые данные сохраняются в отдельные файлы

save(obj, calculation, config, resultMetadata) полное сохранение с конфигурацией
saveOnly(obj, calculation)                     сохранить calculation без конфигурации
saveWithoutConfig(obj, calculation)            синоним saveOnly
saveSimple(obj, filePath, dataStruct)          прямое сохранение структуры в файл
generateFilePath(obj, config, suffix)          генерация пути по шаблону
applyOptions(obj, opts)                        установить опции из структуры
setDefaults(obj)                               сброс к опциям по умолчанию
Constructor Summary
SaverCalculation(varargin)
SaverCalculation Конструктор

obj = SaverCalculation(„PropertyName“, PropertyValue, …) Позволяет задать любые публичные свойства при создании.

Пример:
saver = SaverCalculation(„OutputDir“, „./my_results“, …

„SaveRiccatiTensor“, true);

Property Summary
Format

„mat“ или „json“

NamingPattern
OutputDir
SaveFullState
SaveGapHistory
SaveGreenMatrix
SaveOnlyLastIteration
SaveRiccatiTensor
SeparateHeavyFiles
Method Summary
applyOptions(opts)
applyOptions Установить опции из структуры

obj.applyOptions(opts) – копирует поля структуры opts в свойства объекта. Полезно для задания опций из config.SaveOptions.

Пример:

opts.SaveGreenMatrix = true; opts.SaveRiccatiTensor = false; saver.applyOptions(opts);

extractLastIteration(~, ricTensor, lastStep)

extractLastIteration Извлечь последнюю итерацию из Riccati тензора ricLast = obj.extractLastIteration(ricTensor, lastStep) Если размерность полей тензора 3D (eN × zN × nSteps), возвращает срез по третьему измерению. Поля с меньшей размерностью копируются.

generateFilePath(config, suffix)
generateFilePath Сгенерировать полный путь к файлу на основе шаблона

filePath = obj.generateFilePath(config) filePath = obj.generateFilePath(config, suffix) config – структура с полями для подстановки (может быть пустой) suffix – строка, добавляемая перед расширением (например, „_green“)

Пример:

config = struct(„T“, 1.2, „d“, 50); path = saver.generateFilePath(config, „_gap“) % Результат: „./Results/calc_T_1.2_d_50_gap.mat“

save(calculation, config, resultMetadata)
save Главный метод сохранения с использованием конфигурации

obj.save(calculation, config, resultMetadata) calculation – объект с полем CalculatedPhysicalProperties config – структура с параметрами для именования (может быть пустой) resultMetadata – доп. структура (время, статус и т.п.)

Пример:

config = struct(„T“, T, „fi“, fi); metadata = struct(„duration“, toc); saver.save(calculation, config, metadata);

saveHeavy(data, filePath, description)
saveHeavy Сохранить тяжёлые данные в отдельный MAT-файл

obj.saveHeavy(data, filePath, description) description – строка для вывода в консоль. Если указано расширение .json, оно заменяется на .mat.

Пример:

saver.saveHeavy(bigMatrix, „big.mat“, „Матрица Грина“);

saveOnly(calculation)
saveOnly Сохранить calculation, используя внутренние опции и автогенерацию имени

obj.saveOnly(calculation) Имя файла генерируется по шаблону NamingPattern (подставляется только {id}). Все опции (SaveGreenMatrix и т.д.) работают как обычно.

Пример:

saver = SaverCalculation(„SaveGapHistory“, true); saver.saveOnly(calculation);

saveSimple(~, filePath, dataStruct)
saveSimple Прямое сохранение структуры в указанный файл

obj.saveSimple(filePath, dataStruct) filePath – полный путь к файлу (расширение .mat или .json) dataStruct – структура или переменная для сохранения Создаёт недостающие директории.

Пример:

saver.saveSimple(„debug/gap.mat“, struct(„gap“, gap, „T“, T));

saveToFile(filePath, dataStruct)

saveToFile Запись структуры в файл с учётом формата (mat или json) obj.saveToFile(filePath, dataStruct) Внутренний метод, обычно не вызывается напрямую.

saveWithoutConfig(calculation)

saveWithoutConfig Синоним saveOnly (сохранить без конфигурации)

setDefaults()

setDefaults Сбросить все опции к значениям по умолчанию obj.setDefaults()

class Timer

Bases: handle

Timer - класс для измерения времени выполнения задач Позволяет запустить таймер, остановить и получить отформатированную строку времени (дни:часы:минуты:секунды).

Свойства:

StartTime - время запуска (tic-значение, тип uint64) StopTime - время остановки (в секундах от tic) IsRunning - флаг активности таймера

Методы:

Timer() - конструктор, создаёт остановленный таймер Start() - запуск таймера Stop() - остановка таймера Elapsed() - возвращает прошедшее время в секундах FormatTime() - возвращает строку вида DD.HH:MM:SS Reset() - сброс таймера

Статические методы:

SecondsToDHMS(t) - преобразует секунды в дни, часы, минуты, секунды

Пример форматированной строки времени:

elapsed = 3661.25 секунд timer.FormatTime() -> «00.01:01:01» (1 час 1 минута 1 секунда) elapsed = 90061 секунд -> «01.01:01:01» (1 день 1 час 1 минута 1 секунда) elapsed = 0.5 секунд -> «00.00:00:01» (секунды округляются вверх до целых)

Пример использования:

t = Timer(); t.Start(); pause(1.5); t.Stop(); fprintf(„Время: %sn“, t.FormatTime()); % Вывод: Время: 00.00:00:02

Constructor Summary
Timer()

Конструктор: ничего не запускает

Property Summary
IsRunning
StartTime

время запуска (tic-значение, uint64)

StopTime

время остановки (секунды)

Method Summary
Elapsed()

Elapsed - возвращает прошедшее время в секундах

FormatTime()

FormatTime - возвращает отформатированную строку времени Формат: DD.HH:MM:SS (дни, часы, минуты, целые секунды)

Reset()

Reset - сбросить таймер в начальное состояние

static SecondsToDHMS(t)

SecondsToDHMS - преобразует секунды в дни, часы, минуты, секунды Статический метод, доступный без создания объекта

Start()

Start - запустить таймер (сбрасывает предыдущий)

Stop()

Stop - остановить таймер

1.1. Model

2. Constants

class PhysicalConstants

PhysicalConstants - статический класс с фундаментальными физическими константами Предоставляет доступ к физическим константам, используемым в расчётах. Все свойства являются константными (Constant) и доступны без создания экземпляра.

Примеры использования:

e = PhysicalConstants.e_charge_SI; % заряд электрона h = PhysicalConstants.hs; % постоянная Планка muB = PhysicalConstants.uB; % магнетон Бора

Список свойств:

e_charge_SI - заряд электрона в кулонах (Кл) kB - постоянная Больцмана (Дж/К) hbar_SI - редуцированная постоянная Планка (Дж·с) hs - постоянная Планка (Дж·с), hs = hbar_SI * 2π uB - магнетон Бора (А·м²), uB = (e·ħ)/(2·m_e) EulerMasch - постоянная Эйлера-Маскерони (безразмерная) m_e_SI - масса электрона (кг) GQ - константа GQ = 2·e²/hs (Кл²/(Дж·с) или Сименс) nm - коэффициент перевода нанометров в метры (1 нм = 1e-9 м)

Property Summary
EulerMasch

Постоянная Эйлера-Маскерони (безразмерная)

GQ

Кл²/(Дж·с) или Сименс)

Type:

Константа GQ = 2·e²/hs (единицы

e_charge_SI

Заряд электрона в кулонах (Кл)

hbar_SI

Редуцированная постоянная Планка (Дж·с)

hs

Постоянная Планка (Дж·с), вычисляется как ħ·2π

kB

Постоянная Больцмана (Дж/К)

m_e_SI

Масса электрона в килограммах (кг) Исходное выражение: 9.10938291e-28 * 10e-4 = 9.10938291e-31

nm

Коэффициент перевода нанометров в метры (1 нм = 10^9 м)

uB

Магнетон Бора (А·м²), вычисляется как (e·ħ)/(2·m_e)

class StandardMatrices

ConstantMatrices - Статический класс-контейнер для стандартных константных матриц

Этот класс предназначен для хранения и организации доступа к набору часто используемых матриц в физических и математических расчётах. Все свойства являются статическими (Constant), что обеспечивает прямой доступ без создания экземпляра класса.

Пример использования:

disp(ConstantMatrices.PauliSigma3Matrix); % матрица Паули σ₃ (2×2) disp(ConstantMatrices.PauliTau3SpinMatrix); % матрица τ₃ (4×4) disp(ConstantMatrices.DiracGamma0Matrix); % матрица Дирака γ⁰ (4×4)

См. также: PauliMatrices, DiracMatrices

Property Summary
DiracGamma0Matrix

=== Матрицы Дирака (4×4) ===

DiracGamma1Matrix
DiracGamma2Matrix
DiracGamma3Matrix
DiracGamma5Matrix
IdentityMatrix2x2

=== Единичные матрицы ===

IdentityMatrix3x3

Единичная матрица 3×3

IdentityMatrix4x4

Единичная матрица 4×4

PauliSigma0Matrix

=== Матрицы Паули (2×2) ===

PauliSigma1Matrix

Матрица Паули σ₁ (σ_x)

PauliSigma2Matrix

Матрица Паули σ₂ (σ_y)

PauliSigma3Matrix

Матрица Паули σ₃ (σ_z)

PauliTau3SpinMatrix

=== Спиновые матрицы (4×4) ===

Method Summary
static displayMatrixInfo()

displayMatrixInfo - Отображает информацию о всех доступных матрицах

ConstantMatrices.displayMatrixInfo() выводит в командное окно список всех матриц, хранящихся в классе, с их размерами.

2.1. InitialConditions

2.1.1. Abstractions

class InitialConditions

InitialConditions Абстрактный класс для задания начальных условий физической задачи и стартового состояния вычислительного конвейера.

Свойства:
TaskName – строка с наименованием задачи,

описывающей конкретный расчёт или эксперимент.

PhysicsPipelineStartState – объект состояния конвейера

(класс-наследник PhysicsPipelineState), который определяет начальный этап вычислений.

Конструктор:
InitialConditions(taskName, pipelineState)

taskName – название задачи (string или char) pipelineState – объект начального состояния

вычислительного конвейера

Constructor Summary
InitialConditions(taskName, pipelineState)

Конструктор класса InitialConditions Инициализирует свойства TaskName и PhysicsPipelineStartState.

Property Summary
PhysicsPipelineStartState

Начальное состояние физического вычислительного конвейера

TaskName

Наименование задачи

class MatsubaraInitialConditions

Bases: InitialConditions

MatsubaraInitialConditions Абстрактный класс для задания начальных условий расчётов с использованием частот Мацубары.

Наследует основные свойства задачи и начальное состояние вычислительного конвейера из класса InitialConditions.

Свойства:

MatsubaraFrequenciesNumber – количество частот Мацубары (double) MatsubaraFrequencies – вектор значений частот Мацубары (double)

Методы:
CalculateMatsubaraFrequencies(T, n)

Вычисляет n частот Мацубары для заданной температуры T. Формула: ω_k = (2k + 1) * π * T, где k = 0, 1, …, n-1.

Constructor Summary
MatsubaraInitialConditions(taskName, pipelineState)

Конструктор класса MatsubaraInitialConditions

Вход:

taskName – строка с названием задачи pipelineState – объект начального состояния конвейера

Property Summary
MatsubaraFrequencies

Вектор частот Мацубары

MatsubaraFrequenciesNumber

Количество частот Мацубары

Method Summary
CalculateMatsubaraFrequencies(T, n)

Вычисляет частоты Мацубары для данной температуры

Вход:

T – температура (в тех же единицах, что и энергия/частота) n – количество частот

Результат:

Заполняет свойства MatsubaraFrequenciesNumber и MatsubaraFrequencies в объекте.

3. SFI

class SCFIEnergyBasedInitialConditions

Bases: InitialConditions

SCFIEnergyBasedInitialConditions Класс для задания начальных условий расчёта сверхпроводник– ферромагнитный интерфейс (SC-FI) в энергетическом приближении.

Наследует свойства для задания задачи, начального состояния и энергий из EnergyBasedInitialConditions и добавляет специфические параметры геометрии, спиновых взаимодействий и условий самосогласования.

Свойства:
Split – объект типа SCFIEnergyBasedSplitting,

определяет разбиение сетки по координатам

SpinMixingAngle – угол спинового смешивания (рад) MisorientationAngle_Degrees – угол разориентации (градусы) MisorientationAngle_Rad – угол разориентации (радианы) PairingInteractionConstant – константа парного взаимодействия λ SelfConsistencySteps – количество шагов самосогласования OrderParameterTolerance – порог сходимости параметра порядка InelasticScatteringConstant – Константа неупругого рассеяния

Конструктор:

Создает экземпляр с предустановленным именем задачи „EnergyBased SC-FI task“, начальным состоянием SCFIEnergyBasedPhysicsPipelineState и объектом сетки SCFIEnergyBasedSplitting.

Метод set.MisorientationAngle_Degrees:

При изменении угла в градусах автоматически пересчитывает значение в радианах.

Constructor Summary
SCFIEnergyBasedInitialConditions(L)

Конструктор класса SCFIMatsubaraInitialConditions

Создает объект с именем задачи „Matsubara SC-FI task“, начальным состоянием SCFIMatsubaraPhysicsPipelineState и инициализирует сетку разбиения SCFIMatsubaraSplitting.

Property Summary
InelasticScatteringConstant

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

IsTripleLayer

3 слоя. Структура FI-S-FI.

MisorientationAngle_Degrees

Угол разориентации (градусы)

MisorientationAngle_Rad

Угол разориентации (радианы)

OrderParameterTolerance

Порог сходимости параметра порядка

PairingInteractionConstant

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

SelfConsistencySteps

Количество шагов самосогласования

SpinMixingAngle

Угол спинового смешивания (рад)

Split

Разбиение сетки по координатам

class SCFIMatsubaraInitialConditions

Bases: MatsubaraInitialConditions

SCFIMatsubaraInitialConditions Класс для задания начальных условий расчёта сверхпроводник– ферромагнитный интерфейс (SC-FI) в приближении Мацубары.

Наследует свойства для задания задачи, начального состояния и частот Мацубары из MatsubaraInitialConditions и добавляет специфические параметры геометрии, спиновых взаимодействий и условий самосогласования.

Свойства:
Split – объект типа SCFIMatsubaraSplitting,

определяет разбиение сетки по координатам

SpinMixingAngle – угол спинового смешивания (рад) MisorientationAngle_Degrees – угол разориентации (градусы) MisorientationAngle_Rad – угол разориентации (радианы) PairingInteractionConstant – константа парного взаимодействия λ SelfConsistencySteps – количество шагов самосогласования OrderParameterTolerance – порог сходимости параметра порядка InelasticScatteringConstant – Константа неупругого рассеяния

Конструктор:

Создает экземпляр с предустановленным именем задачи „Matsubara SC-FI task“, начальным состоянием SCFIMatsubaraPhysicsPipelineState и объектом сетки SCFIMatsubaraSplitting.

Метод set.MisorientationAngle_Degrees:

При изменении угла в градусах автоматически пересчитывает значение в радианах.

Constructor Summary
SCFIMatsubaraInitialConditions(L)

Конструктор класса SCFIMatsubaraInitialConditions

Создает объект с именем задачи „Matsubara SC-FI task“, начальным состоянием SCFIMatsubaraPhysicsPipelineState и инициализирует сетку разбиения SCFIMatsubaraSplitting.

Property Summary
InelasticScatteringConstant

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

MisorientationAngle_Degrees

Угол разориентации (градусы)

MisorientationAngle_Rad

Угол разориентации (радианы)

OrderParameterTolerance

Порог сходимости параметра порядка

PairingInteractionConstant

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

SelfConsistencySteps

Количество шагов самосогласования

SpinMixingAngle

Угол спинового смешивания (рад)

Split

Разбиение сетки по координатам

3.1. Kernels

3.1.1. Abstractions

class GreenBase

Bases: handle

GreenBase - абстрактный базовый класс для функций Грина 4×4 Содержит общие свойства (16 компонент G11E … G44E) и методы:

GetGreenMatrix(eIdx, zIdx) - возвращает 4×4 матрицу GetInterpPart(zIdx, comp, E) - сплайн-интерполяция компоненты по энергии

Все наследники должны заполнять защищённые свойства G11E … G44E в своих конструкторах или методах расчёта.

Method Summary
GetGreenMatrix(eIdx, zIdx)

GetGreenMatrix - возвращает 4×4 комплексную матрицу Грина Вход:

eIdx – индекс энергии (или частоты), 1 … eN zIdx – индекс координаты, 1 … zN

Выход:

G – комплексная матрица 4×4

GetInterpPart(zIdx, componentStr, E_mesh)

GetInterpPart - возвращает сплайн-интерполяцию компоненты по энергии Удобно для последующего быстрого вычисления значений на произвольной сетке. Вход:

zIdx – индекс координаты componentStr – строка „11“,“12“,“13“,“14“,“21“,…,“44“ E_mesh – вектор энергий (1×nE)

Выход:

ppReal, ppImag – структуры ppform для вещественной и мнимой частей

class RiccatiBase

RICCATIBASE Summary of this class goes here Detailed explanation goes here

Constructor Summary
RiccatiBase(inputArg1, inputArg2)

RICCATIBASE Construct an instance of this class Detailed explanation goes here

Property Summary
Property1
Method Summary
method1(inputArg)

METHOD1 Summary of this method goes here Detailed explanation goes here

3.1.2. Conductivity

class Conductivity
Property Summary
C11
C12
C21
C22
ConductFull

3.1.3. GreenFunctions

class AdvancedGreenFunction

Bases: GreenBase

AdvancedGreenFunction - опережающие функции Грина (4×4) Вычисляются из запаздывающей функции Грина преобразованием:

G^A = -σ3 * (G^R)† * σ3,

где σ3 = blkdiag(σ3, σ3), σ3 = diag(1, -1).

Constructor Summary
AdvancedGreenFunction(retardedGreen)
Method Summary
CalculateAdvancedGreen(~, greenR)
class KeldyshGreenFunction

Bases: GreenBase

KeldyshGreenFunction - класс функций Грина типа Keldysh (4×4) Используется для неравновесных расчётов. Вычисляется по формуле:

G^K = (G^R - G^A) * tanh(β ω / 2),

где β = 1/T, ω – частота (энергия).

Конструктор: KeldyshGreenFunction(retardedGreen, advancedGreen, SC) Вход:

retardedGreen – объект RetardedGreenFunction advancedGreen – объект AdvancedGreenFunction SC – структура с полями:

.T – температура (скаляр) .Split.Emas – вектор частот/энергий (1×eN)

Constructor Summary
KeldyshGreenFunction(retardedGreen, advancedGreen, SC)
Method Summary
CalculateKeldyshGreen(~, greenR, greenA, beta, energy)
class RetardedGreenFunction

Bases: GreenBase

RetardedGreenFunction - класс запаздывающих функций Грина (4×4) Используется в технике уравнений Узаделя. Вычисляется по параметрам Риккати. Дополнительно предоставляет аномальные компоненты (синглет, триплет).

Свойства:

fsinglet – синглетная аномальная функция ftriplet – триплетная (Sz=0) ftripletUp – триплетная (Sz=+1) ftripletDown – триплетная (Sz=-1)

Методы:

RetardedGreenFunction() - конструктор CalculateGreenByRiccati(obj, riccatiTensor, stepIdx) - заполнение из Riccati FormAnomal() - вычисление f_singlet, f_triplet UpdateAnomal() - вычисление f_tripletUp/Down GetDos(zIdx) - плотность состояний

Constructor Summary
RetardedGreenFunction()

Конструктор – пустой, готовность = false

Property Summary
fsinglet

синглетная аномалия (zN × eN)

ftriplet

триплетная Sz=0 (zN × eN)

ftripletDown

триплетная Sz=-1 (zN × eN)

ftripletUp

триплетная Sz=+1 (zN × eN)

Method Summary
CalculateGreenByRiccati(riccatiTensor, stepIdx)

CalculateGreenByRiccati - вычисляет запаздывающую функцию Грина по параметрам Риккати. Вход:

riccatiTensor – объект класса Riccati (16 компонент gam и dgam) stepIdx – номер шага самосогласования (целое, 1 … stepsN)

FormAnomal()
GetDos(zIdx)
UpdateAnomal()

3.1.4. Riccati

class Riccati

Riccati - Хранение и управление параметрами Риккати для уравнений Узаделя Объект этого класса содержит все 16 компонент параметров Риккати (gam11, gam12, gam21, gam22, их тильдированные версии и производные) в виде трёхмерных тензоров размера (eN × zN × stepsN), где:

eN - число частот (Мацубаровских или энергетических узлов) zN - число точек по пространственной координате stepsN - максимальное число шагов самосогласования

Основное назначение - централизованное хранение решений краевых задач для каждой частоты и каждой итерации самосогласования.

Методы:

Riccati(zN, eN, stepsN) - конструктор, выделяет память под все тензоры idx = getRiccatiIndices() - возвращает структуру с соответствием

между мнемоническими именами компонент и их номерами в векторе решения, возвращаемом ODEFunc.

Пример использования:

obj = Riccati(100, 64, 20); idx = obj.getRiccatiIndices(); y = deval(sol, z_mesh); obj.gam12E(ifreq, :, istep) = y(idx.GAM12, :);

См. также: ODEFunc, GreenFunction

Constructor Summary
Riccati(zN, eN, stepsN)

Riccati - Конструктор класса obj = Riccati(zN, eN, stepsN) создаёт объект с заданными размерностями и выделяет память под все тензоры.

Входные параметры:

zN - число узлов координатной сетки (скаляр) eN - число частот (скаляр) stepsN - максимальное число шагов самосогласования

Выход:

obj - экземпляр класса Riccati с нулевыми тензорами

Property Summary
dgam11E

Производные основных компонент

dgam12E
dgam21E
dgam22E
dgamt11E

Производные тильдированных компонент

dgamt12E
dgamt21E
dgamt22E
eN

число частот

gam11E

(eN x zN x stepsN)

gam12E
gam21E
gam22E
gamt11E

Тильдированные компоненты

gamt12E
gamt21E
gamt22E
stepsN

максимальное число итераций

zN

число точек по координате

Method Summary
getRiccatiIndices(~)

getRiccatiIndices - Возвращает отображение индексов компонент idx = getRiccatiIndices() возвращает структуру, поля которой содержат номера строк в векторе решения, возвращаемом функцией ODEFunc. Это позволяет обращаться к компонентам по именам, а не по «магическим числам», повышая читаемость и надёжность кода.

Структура idx имеет следующие поля:

GAM11, GAM21, GAMT11, GAMT21, DGAM11, DGAM21, DGAMT11, DGAMT21, GAM12, GAM22, GAMT12, GAMT22, DGAM12, DGAM22, DGAMT12, DGAMT22

Пример:

idx = obj.getRiccatiIndices(); Y = deval(sol, z_mesh); obj.gam12E(ifreq, :, step) = Y(idx.GAM12, :);

3.2. Materials

4. Superconductors

class AluminumPhysicalConstants

Bases: SuperconductorPhysicalConstants

AluminumPhysicalConstants Класс для хранения физических констант алюминия как сверхпроводникового материала. Наследует все вычисляемые свойства и методы из SuperconductorPhysicalConstants.

Задает характерные параметры алюминия:
  • Энергия Ферми (Дж)

  • Удельная проводимость в нормальном состоянии (См/м)

  • Скорость Ферми (м/с)

  • Длина свободного пробега (м)

  • Критическая температура (К)

  • Площадь поперечного сечения (м²)

Эти значения могут использоваться для расчета коэффициента диффузии, вектора Ферми, плотности состояний и других параметров сверхпроводника.

Constructor Summary
AluminumPhysicalConstants()

Конструктор класса AluminumPhysicalConstants

Инициализирует все основные физические параметры алюминия в СИ:

FermiEnergy_SI – энергия Ферми (Дж) Sigma_SI – удельная проводимость (См/м) VelocityFermy_SI – скорость Ферми (м/с) FreePathLength_SI – длина свободного пробега (м) Tcritical_SI – критическая температура (К) CrossSectionalArea_SI – площадь поперечного сечения (м²)

class NiobiumPhysicalConstants

Bases: SuperconductorPhysicalConstants

NiobiumPhysicalConstants Класс для хранения физических констант ниобия как сверхпроводникового материала. Наследует все вычисляемые свойства и методы из SuperconductorPhysicalConstants.

Задает характерные параметры ниобия:
  • Энергия Ферми (Дж)

  • Удельная проводимость в нормальном состоянии (См/м)

  • Скорость Ферми (м/с)

  • Длина свободного пробега (м)

  • Критическая температура (К)

  • Площадь поперечного сечения (м²)

Эти значения могут использоваться для расчета коэффициента диффузии, вектора Ферми, плотности состояний и других параметров сверхпроводника.

Constructor Summary
NiobiumPhysicalConstants()

Конструктор класса NiobiumPhysicalConstants

Инициализирует все основные физические параметры ниобия в СИ:

FermiEnergy_SI – энергия Ферми (Дж) Sigma_SI – удельная проводимость (См/м) VelocityFermy_SI – скорость Ферми (м/с) FreePathLength_SI – длина свободного пробега (м) Tcritical_SI – критическая температура (К) CrossSectionalArea_SI – площадь поперечного сечения (м²)

class SuperconductorPhysicalConstants

SuperconductorPhysicalConstants Абстрактный класс для хранения и вычисления физических констант сверхпроводникового материала.

Свойства:

FermiEnergy_SI – энергия Ферми, Дж (джоули) Sigma_SI – удельная проводимость, См/м (сименс/метр) VelocityFermy_SI – скорость Ферми, м/с (метры в секунду) FreePathLength_SI – длина свободного пробега, м (метры) Tcritical_SI – критическая температура, К (кельвины) CrossSectionalArea_SI – поперечная площадь образца, м² (метры²)

Зависимые свойства (вычисляются автоматически):

DiffusionCoefficient_SI – коэффициент диффузии, м²/с FermiWaveVector_SI – волновой вектор Ферми, м⁻¹ FermiDensityOfStates_SI – плотность состояний на уровне Ферми, м⁻¹

Методы предоставляют расчёт различных параметров материала, включая коэффициент диффузии, вектор Ферми, плотность состояний, объёмную проводимость и параметр порядка в приближении БКШ.

Property Summary
CouplingConstant

N(0)V - безразмерная константа связи

CrossSectionalArea_SI

Поперечная площадь образца (м²)

DiffusionCoefficient_SI

Коэффициент диффузии (м²/с)

FermiDensityOfStates_SI

Плотность состояний на уровне Ферми (м⁻¹)

FermiEnergy_SI

Энергия Ферми (Дж)

FermiWaveVector_SI

Волновой вектор Ферми (м⁻¹)

FreePathLength_SI

Длина свободного пробега (м)

Sigma_SI

Удельная проводимость (См/м)

Tcritical_SI

Критическая температура (К)

VelocityFermy_SI

Скорость Ферми (м/с)

Method Summary
CalcBulkConductance_SI(L)

Вычисляет объемную проводимость материала Формула: G = sigma * A / L Вход:

L – длина образца (м)

Выход:

G – объемная проводимость (См)

CalcConstantG(T)

Вычисляет нормировочную константу G Формула: ConstantG = (D * 1e18 * ħ) / Δ(T)

CalcInitialOrderParameter(T)

Вычисляет параметр порядка в приближении БКШ для температур ниже критической Формула: Δ = 1.76 * kB * Tc * tanh(1.74 * sqrt(Tc/T - 1))

4.1. Results

4.1.1. Abstractions

class CalculatedPhysicalProperties

Bases: handle

CalculatedPhysicalProperties Абстрактный базовый класс для хранения вычисленных физических свойств слоя.

Данный класс служит интерфейсом, определяющим общие свойства для всех объектов, в которых сохраняются результаты вычислений.

Свойства (абстрактные):

TaskName – имя задачи (строка), например «Matsubara SC-FI task» PhysicsPipelineEndState – объект, описывающий конечное состояние

физического пайплайна (наследник PhysicsPipelineState)

Property Summary
PhysicsPipelineEndState

PhysicsPipelineEndState Конечное состояние физического пайплайна. Представляет собой объект-наследник класса PhysicsPipelineState.

TaskName

TaskName Имя задачи моделирования (например, «Matsubara SC-FI task»)

5. SFI

class SFIEnergyBasedCalculatedPhysicalProperties

Bases: CalculatedPhysicalProperties

SFIENERGYBASEDCALCULATEDPHYSICALPROPERTIES - Класс для хранения результатов расчёта в энергетическом представлении для структур S-FI и FI-S-FI.

Наследуется от абстрактного класса CalculatedPhysicalProperties. Содержит все физические характеристики, рассчитанные в процессе самосогласованного решения уравнения Узаделя в энергетическом представлении.

Все величины хранятся в естественных единицах (в единицах параметра порядка Δ), что обеспечивает численную устойчивость и независимость от масштабирования.

См. также: CalculatedPhysicalProperties, SFIMatsubaraCalculatedPhysicalProperties

Constructor Summary
SFIEnergyBasedCalculatedPhysicalProperties()

Конструктор класса SFIEnergyBasedCalculatedPhysicalProperties

Инициализирует объект с базовыми значениями:
  • TaskName = «SFI EnergyBased task»

  • Все свойства остаются пустыми (будут заполнены в процессе расчёта)

См. также: CalculatedPhysicalProperties.CalculatedPhysicalProperties

Property Summary
ConductivityTensor

Комплексная высокочастотная проводимость σ(z, ω)

DensityOfStates

Обычная (полная) плотность состояний N(z, ε)

FreeEnergy

Свободная энергия Гельмгольца F

LastStep

Номер последнего выполненного шага самосогласования

Magnetization

Намагниченность M(z), индуцированная в сверхпроводнике

OrderParameter

Самосогласованный параметр порядка Δ(z)

OrderParameterHistory

История сходимости параметра порядка по итерациям

RetardedGreenMatrix

Запаздывающая функция Грина (объект класса RetardedGreenFunction)

RiccattiTensor

Тензор параметров Риккати γ(z, ε) и ˜γ(z, ε)

SpinResolvedDensityOfStates_Down

Спин-разрешённая DOS для спина вниз N↓(z, ε)

SpinResolvedDensityOfStates_Up

Спин-разрешённая DOS для спина вверх N↑(z, ε)

Method Summary
IsComplete()

ПОЛНАЯ_ЛИ_ВЫЧИСЛЕНА - Проверка наличия всех ключевых результатов

Выходные параметры:

tf - логическое значение. true, если все ключевые поля заполнены.

См. также: RunSfiEnergyBasedPipeline

class SCFIMatsubaraCalculatedPhysicalProperties

Bases: CalculatedPhysicalProperties

SCFIMatsubaraCalculatedPhysicalProperties Класс для хранения вычисленных физических свойств задачи самосогласованного расчета в представлении Мацубары (SC-FI Matsubara).

Наследуется от:

CalculatedPhysicalProperties (содержит TaskName, PhysicsPipelineEndState и др.)

Добавленные свойства:

RiccattiTensor – тензор параметров Риккати (объект Riccati) GreenMatrix – матрица функций Грина (объект GreenFunction) OrderParameter – согласованный параметр порядка OrderParameterHystory – история согласования параметра порядка LastStep – последний выполненный шаг согласования RelativeChange – относительное изменение параметра порядка

Constructor Summary
SCFIMatsubaraCalculatedPhysicalProperties()

Конструктор. Устанавливает имя задачи по умолчанию.

Property Summary
GreenMatrix

Матрица функций Грина

LastStep

Последний шаг согласования

OrderParameter

Параметр порядка

OrderParameterHistory

История параметра порядка

RelativeChange

Относительное изменение на последнем шаге

RiccattiTensor

Тензор параметров Риккати

5.1. Splitting

5.1.1. Abstractions

class Splitting

Bases: handle

Splitting - абстрактный класс для хранения и создания сеток Содержит общие свойства для координатной и энергетической сеток. Дочерние классы должны переопределить CreateSplitting для создания неравномерных сеток.

Constructor Summary
Splitting(zStart, zEnd, zN, eStart, eEnd, eN, zeroEpsilon)

Конструктор – задаёт параметры и создаёт равномерные сетки

Property Summary
Emas

энергетическая сетка (1×eN)

ZeroEpsilon

отступ от нуля при построении сетки через ноль

Zmas

координатная сетка (1×zN)

eEnd

конец энергии

eN

число точек по энергии

eStart

начало энергии

zEnd

конец координат

zN

число точек по координате

zStart

начало координат

Method Summary
UniformE()

Равномерная сетка по энергии с пропуском нуля (использует ZeroEpsilon)

UniformZ()

Равномерная сетка по координате

static mustBeEven(value)
setEGrid(eStart, eEnd, eN)
setZGrid(zStart, zEnd, zN)

6. SFI

class EnergyBasedSplitting

Bases: Splitting

EnergyBasedSplitting - неравномерные сетки для энергетической модели Алгоритм построения основан на классе SCFIscSplitting. Позволяет задавать интервалы сгущения по координате и энергии. Отступ от нуля (ZeroEpsilon) настраивается (по умолчанию 0.01).

Примеры:

split = EnergyBasedSplitting(0, 500, 100, -3, 3, 80); split = split.SetZrefinement(100, 400, 60); split = split.SetErefinement(-1, 1, 40); split.ZeroEpsilon = 0.001; % изменить отступ

Constructor Summary
EnergyBasedSplitting(varargin)

Безусловный вызов суперкласса с фиктивными значениями

Property Summary
eBetween
eOne

Параметры сгущения по энергии

eSecond
zBetween
zOne

Параметры сгущения по координате

zSecond
Method Summary
SetErefinement(eOne, eSecond, eBetween)
SetZrefinement(zOne, zSecond, zBetween)
setEGrid(eStart, eEnd, eN)
setZGrid(zStart, zEnd, zN)
class MatsubaraSplitting

Bases: Splitting

MatsubaraSplitting - класс для сеток по координате и частотам (Мацубара) Наследует Splitting только для координатной сетки (zStart, zEnd, zN, Zmas). Частотная сетка (Omas) задаётся отдельно методом SetOmegaSplitting. Свойства eStart, eEnd, eN, Emas из базового класса не используются.

Примеры:

split = MatsubaraSplitting(0, 500, 100); split = split.SetOmegaSplitting(0.01, 10, 80); split = split.SetRefinement(200, 300, 40); % сгущение по координате

Constructor Summary
MatsubaraSplitting(varargin)

Конструктор: MatsubaraSplitting() – пустой объект MatsubaraSplitting(zStart, zEnd, zN) – координатная сетка

Property Summary
Omas
oEnd
oN

Дополнительная сетка (частоты Мацубары)

oStart
zBetween
zOne

Параметры сгущения по координате

zSecond
Method Summary
SetOmegaSplitting(oStart, oEnd, oN)

Задание сетки частот

SetRefinement(one, second, between)

Задание интервала сгущения по координате

setZGrid(zStart, zEnd, zN)

6.1. State

6.1.1. Abstractions

class PhysicsPipelineState

PhysicsPipelineState Абстрактный класс для представления состояния вычислительного конвейера (pipeline) физической задачи.

Свойства:
TaskName – строка с наименованием задачи, описывающей

конкретный этап или тип вычислений.

Методы:

Конструктор принимает наименование задачи и сохраняет его как свойство TaskName.

Constructor Summary
PhysicsPipelineState(taskName)

Конструктор класса PhysicsPipelineState

Вход:

taskName – строка с названием задачи (может быть char или string)

Если аргумент передан, преобразует его в строковый тип и присваивает свойству TaskName.

Property Summary
TaskName

Наименование задачи или этапа вычислений

7. SFI

class SCFIEnergyBasedState
Constructor Summary
SCFIEnergyBasedState()
Property Summary
IsConductivityReady
IsDoSReady
IsFreeEnergyReady
IsGreenReady
IsMagnetizationReady
IsOptimised
IsSolved
IsSpinDoSReady
class SCFIMatsubaraPhysicsPipelineState

Bases: PhysicsPipelineState

SCFIMatsubaraPhysicsPipelineState Класс, описывающий состояние вычислительного конвейера для задачи типа Matsubara SC-FI (сверхпроводник–ферромагнитный изолятор).

Наследует базовое свойство TaskName от PhysicsPipelineState и добавляет дополнительный флаг для управления расчётами.

Свойства:
CalculateOrderParameter – логический флаг (true/false),

указывает, требуется ли вычисление параметра порядка в рамках данного шага расчёта. По умолчанию false.

Конструктор:

Инициализирует свойство TaskName значением «Matsubara SC-FI task» для идентификации этапа.

Constructor Summary
SCFIMatsubaraPhysicsPipelineState()

Конструктор класса SCFIMatsubaraPhysicsPipelineState

Устанавливает имя задачи «Matsubara SC-FI task» через конструктор родительского класса.

Property Summary
CalculateOrderParameter

Признак необходимости вычислить параметр порядка

7.1. Structures

8. Layers

class SuperconductorLayer(None)

Bases: handle

SuperconductorLayer Класс для описания сверхпроводникового слоя.

Хранит параметры слоя: материал, длину, температуру и т.д.

Свойства:

Name – наименование объекта (по умолчанию „Superconductor“) Material – объект класса, наследующего SuperconductorPhysicalConstants Length_nm – длина слоя в нанометрах Length_SI – длина слоя в метрах (автоматически вычисляется) T – температура слоя в кельвинах

Методы:

SuperconductorLayer(material, length_nm, t) – конструктор

Constructor Summary
SuperconductorLayer(material, length_nm, t)

Создает объект сверхпроводникового слоя

Входные параметры:

material – объект SuperconductorPhysicalConstants (напр. AluminumPhysicalConstants) length_nm – длина слоя (нм) t – температура слоя (К)

Property Summary
Length_SI

длина в метрах (зависимое свойство)

Length_nm

длина в нанометрах

Material

SuperconductorPhysicalConstants % тип материала

Name

имя по умолчанию

T

температура (К)

8.1. PhysicalPropertiesProcedures

9. SFI

SFIEnergyBasedFindConductivity(SC)
SFIEnergyBasedFindDensityofStates(SC)
SFIEnergyBasedFindFreeEnergy(SC, method)
SFIEnergyBasedFindGreenFunctions(SC)
SFIEnergyBasedFindMagnetization(SC)
SFIEnergyBasedFindSpinDoS(SC)
CalculateOrderParameter(vFs, T, rho, lambda)

CalculateOrderParameter — вычисляет параметр порядка Δ(z)

Входные параметры:

vFs — [Nω x Nz] матрица значений синглетной функции Грина T — температура системы rho — значение плотности состояний ρ(T) lambda — константа спаривания λ

Выходной парамтр:

Delta — [1 x Nz] массив значений параметра порядка Δ(z)

SCFIMatsubaraCalculateRhoT(T, Tc, matsubaraFreqs)

SCFIMatsubaraCalculateRhoT - вычисляет ρ(T) по формуле (17)

Входные параметры:

T - температура системы (число) Tc - критическая температура сверхпроводника (число) matsubaraFrequencies - [1 x N] массив частот Мацубары (все > 0)

Выходной параметр:

rho - вычисленное значение ρ(T)

SCFIMatsubaraCheckConvergence(newDelta, currentDelta, tolerance)

SCFIMatsubaraCheckConvergence — проверяет сходимость параметра порядка Δ(z)

Входные параметры:

newDelta — [1 x zN] массив нового параметра порядка (текущая итерация) currentDelta — [1 x zN] массив старого параметра порядка (предыдущая итерация) tolerance — число, допустимая погрешность (например, 1e-5)

Выходные параметры:

converged — логический флаг (true, если сходимость достигнута) relativeChange — максимальное относительное изменение параметра порядка

9.1. Pipelines

10. SFI

RunSFIEnergyBasedPipeline(calculation, isParOnCPU)

RunSFIEnergyBasedPipeline — конвейер полного расчёта уравнений Узаделя в энергетическом представлении (SFI-модель) с использованием статического Logger.

Выполняет:
  1. Инициализацию статического логгера.

  2. Инициализацию вычисляемых свойств (если отсутствуют).

  3. Запуск таймера.

  4. Запуск самосогласованного цикла (последовательно или параллельно).

  5. Сохранение результатов и времени выполнения.

  6. Автоматическое закрытие лога при ошибке (через onCleanup).

Вход:

calculation — структура/объект с полями: TaskName, Split, stepsN, … isParOnCPU — логический флаг: true — параллельная версия (parfor),

false — последовательная версия.

Выход:
calculation — обновлённая структура с полями Ric, GreenMatrix,

OrderParameter, LastStep, RelativeChange, CalculationTime, Data.

RunSFIMatsubaraPipeline(calculation, isParOnCPU)

RunSFIMatsubaraPipeline — конвейер полного расчёта уравнений Узаделя в технике Мацубары с использованием статического Logger и класса Timer.

Выполняет:
  1. Инициализацию статического логгера (создание папки по дате в Config.LogsFolder).

  2. Инициализацию объекта CalculatedPhysicalProperties (если отсутствует).

  3. Запуск таймера.

  4. Запуск самосогласованного цикла SCFIMatsubaraSelfConsistencyLoopProcedure.

  5. Сохранение времени выполнения и метаданных в объект calculation.

  6. Автоматическое закрытие лог-файла даже при ошибке (через onCleanup).

Вход:

calculation — объект класса Calculation

Выход:

calculation — обновлённый объект Calculation

10.1. Solvers

11. SFI

SCFIEnergyBasedBoundary(ya, yb, params)

SCFIEnergyBasedBoundary – граничные условия только на правом конце. Левая граница – нулевая производная (свободный конец). params – плоская структура с полями: fi, Ns, GQ, Gbo, L, theta (или m).

SCFIEnergyBasedBoundaryTripple(ya, yb, params)

SCFIEnergyBasedBoundaryBoth – граничные условия для обоих концов. Левая граница: намагниченность вдоль +z (σ_z). Правая граница: намагниченность повёрнута на угол theta относительно оси z. params – плоская структура с полями: fi, Ns, GQ, Gbo, L, theta.

SCFIEnergyBasedForm_Delta(z, ii)
SCFIEnergyBasedInitialGuess(z_mesh, ~, ~)

SCFIEnergyBasedInitialGuess – формирует начальное приближение для уравнений Риккати (энергетическое представление, SFI-модель).

Вход:

z_mesh – координатная сетка (1×zN) ~, ~ – заглушки для совместимости с интерфейсом InitialGuessFunc

(энергия и сплайн параметра порядка не используются)

Выход:
yInit – матрица 16×zN, содержащая начальные значения 16 компонент
(gam11,gam21,gamt11,gamt21, dgam11,dgam21,dgamt11,dgamt21,

gam12,gam22,gamt12,gamt22, dgam12,dgam22,dgamt12,dgamt22)

Производные (5-8, 13-16) обнулены, остальные (1-4,9-12) = 1e-3.

SCFIEnergyBasedODE(x, y, E, ppDelta, calculation)

SCFIUsadelODE – правые части уравнений Узаделя (энергетическое представление) x – координата y – вектор 16 компонент E – энергия (скаляр) ppDelta – сплайн-структура параметра порядка Δ(z) calculation – структура/объект с полями:

.ConstantG – константа связи (обычно 1/τ) .nu – мнимая добавка (уширение)

class SFIEnergyBasedBoundaryParams

SFIEnergyBasedBoundaryParams - статический класс для формирования параметров граничных условий в энергетической модели SFI-Usadel.

Предоставляет единый интерфейс для создания структуры params, которая используется в функциях:

  • SCFIEnergyBasedBoundary (граница только справа)

  • SCFIEnergyBasedBoundaryBoth (обе границы)

Все поля params являются скалярами и не требуют вложенных структур. Левая намагниченность считается фиксированной (σ_z), правая поворачивается на угол theta, заданный в calculation.

Пример использования:

% Предполагается, что calculation уже сформирован params = SFIEnergyBasedBoundaryParams.create(calculation); sol = bvp4c(@odefun, @(ya,yb) SCFIEnergyBasedBoundaryBoth(ya,yb,params), solinit);

Method Summary
static create(calculation)

create - создаёт структуру параметров из объекта/структуры calculation

Входной аргумент:
calculation - структура или объект, содержащая следующие поля:

.Structure.Material.FermiDensityOfStates_SI (Ns) .Structure.Length_SI (L) .Structure.Material.CalcBulkConductance_SI (функция для Gbo) .InitialConditions.SpinMixingAngle (fi) .InitialConditions.MisorientationAngle_Degrees (theta в градусах)

Выходной аргумент:
params - структура со следующими полями:

fi - угол спинового смешивания (радианы) Ns - плотность состояний на интерфейсе (ед. СИ) GQ - квантовая проводимость (ед. СИ) Gbo - проводимость объёмного материала (См) L - длина/толщина интерфейса (м) theta - угол разориентации намагниченности правой границы (радианы)

Примечания:
  • Левая граница всегда имеет намагниченность вдоль оси +z.

  • Правая намагниченность строится как поворот σ_z на угол theta вокруг оси y: σ_θ = cosθ σ_z + sinθ σ_x.

  • Если требуется явно задать матрицу намагниченности 4×4, можно добавить поле params.m, но текущая реализация использует только угол theta.

SFIEnergyBasedComputeSelfConsistentGap(riccatiTensor, calculation, stepIdx)

Вычисление щели Δ(z) по параметрам Риккати (аналог findGap из старой версии)

Вход:
riccatiTensor - структура/объект с полями:

.gam11E, .gam12E, .gam21E, .gam22E .gamt11E, .gamt12E, .gamt21E, .gamt22E Каждое поле имеет размер [eN, zN, nSteps] (или [eN, zN], если шаг один)

calculation - структура с полями:

.InitialConditions.Split (Zmas, Emas, eStart, eEnd) .Structure.Material (lN0, Tcritical_SI, методы CalcDelta0, CalcInitialOrderParameter) .Structure.T - температура

stepIdx - номер шага самосогласования (необязательно, по умолчанию последний)

SFIEnergyBasedSelfConsistencyLoopProcedure(calculation, ODEFunc, BCFunc, InitialGuessFunc)

SFIEnergyBasedSelfConsistencyLoopProcedure — основной самосогласованный цикл для решения уравнений Узаделя в энергетическом представлении (SFI-модель).

Вход:

calculation – структура/объект с параметрами расчёта ODEFunc – @(x,y,E,ppDelta,params) правая часть ОДУ BCFunc – @(ya,yb,bc) граничные условия InitialGuessFunc – @(z_mesh, ~, ~) начальное приближение (16×zN)

Выход:
calculation – обновлённая структура с полями Ric, GreenMatrix,

OrderParameter, LastStep, RelativeChange.

SFIEnergyBasedSelfConsistencyLoopProcedure_Parfor(calculation, ODEFunc, BCFunc, InitialGuessFunc)

SFIEnergyBasedSelfConsistencyLoopProcedure_Parfor — параллельная версия самосогласованного цикла для энергетического представления (SFI-модель).

Оптимизации:
  • parallel.pool.Constant для неизменяемых данных

  • сборка результатов внутри parfor в массив структур

  • автоматическое создание пула (процессный при >=4 ядрах)

  • сокращение транспонирований

Требуется Parallel Computing Toolbox.

Вход и выход совпадают с последовательной версией.

CalculateOrderParameter(vFs, T, rho, lambda)

CalculateOrderParameter — вычисляет параметр порядка Δ(z)

Входные параметры:

vFs — [Nω x Nz] матрица значений синглетной функции Грина T — температура системы rho — значение плотности состояний ρ(T) lambda — константа спаривания λ

Выходной парамтр:

Delta — [1 x Nz] массив значений параметра порядка Δ(z)

InitialGuessFuncInterpolation(x, z_mesh_ref, y_init_ref)

Возвращает начальное приближение в заданной точке

Inputs:

x – координата z_mesh_ref – сетка по координате y_init_ref – матрица начальных условий [16 x N]

Output:

y – вектор начальных условий [16x1]

SCFIMatsubaraBoundary(ya, yb, params)

Вычисляет граничные условия для параметров Риккати

Inputs:

ya – значения функции в левой границе [16x1] yb – значения функции в правой границе [16x1] params – структура с параметрами (fiG, NsG, GQG, GboG, LG)

Output:

res – вектор граничных условий [16x1]

SCFIMatsubaraBoundaryParams(calculation)

Собирает структуру параметров для SCFIMatsubaraBoundary с разными углами спинового смешивания и разными m на левой/правой границе.

Ожидаемые (но не обязательные) поля в calculation:

.InitialConditions.SpinMixingAngle % скаляр или [fiL fiR] .InitialConditions.mVectors.left = [nx ny nz] % или 4x4 матрица mL .InitialConditions.mVectors.right = [nx ny nz] % или 4x4 матрица mR .Structure.Length_SI % длина (если одна на обе ГУ) .Structure.LengthLeft_SI / LengthRight_SI % (опционально) разные .Structure.Material.FermiDensityOfStates_SI .Structure.Material.CalcBulkConductance_SI(L)

Результат (то, что ждёт твоя BC-функция):

params.left.fi, params.right.fi params.left.m, params.right.m % 4x4 params.left.Ns, params.right.Ns params.left.GQ, params.right.GQ params.left.Gbo, params.right.Gbo params.left.L, params.right.L

SCFIMatsubaraCalculateRhoT(T, Tc, matsubaraFreqs)

SCFIMatsubaraCalculateRhoT - вычисляет ρ(T) по формуле (17)

Входные параметры:

T - температура системы (число) Tc - критическая температура сверхпроводника (число) matsubaraFrequencies - [1 x N] массив частот Мацубары (все > 0)

Выходной параметр:

rho - вычисленное значение ρ(T)

SCFIMatsubaraCheckConvergence(newDelta, currentDelta, tolerance)

SCFIMatsubaraCheckConvergence — проверяет сходимость параметра порядка Δ(z)

Входные параметры:

newDelta — [1 x zN] массив нового параметра порядка (текущая итерация) currentDelta — [1 x zN] массив старого параметра порядка (предыдущая итерация) tolerance — число, допустимая погрешность (например, 1e-5)

Выходные параметры:

converged — логический флаг (true, если сходимость достигнута) relativeChange — максимальное относительное изменение параметра порядка

SCFIMatsubaraForm_Delta(z, ii)

Интерполирует параметр порядка

Inputs:

z – координата ii – интерполянт (pp-структура)

Output:

y – значение параметра порядка

SCFIMatsubaraInitialGuess(z_mesh, omega_n, ii)

z_mesh : вектор узлов по z omega_n : частота Мацубары (>0) ii : pp-интерполянт Δ(z), совместимый с SCFIForm_Delta(x, ii)

SCFIMatsubaraODE(x, y, omega_n, ii, params)

Вычисляет правую часть уравнений Узаделя в представлении Мацубары

Inputs:

x – координата y – вектор функций [16x1], содержащий матричные элементы

gam, gamt, dgam, dgamt

omega_n – частота Мацубары ii – интерполянт (pp-структура) для Δ(x) params – структура параметров:

.Constant – нормировочный параметр .nu – потери из-за неупругого рассеяния (не используется здесь)

Output:

dydx – производная вектора y по координате [16x1]

SCFIMatsubaraUpdateOrderParameter(GreenMatrix, T, Tc, ~, matsubaraFreqs)

UpdateOrderParameter — обновляет параметр порядка Δ(z) для новой итерации

Входные параметры:

GreenMatrix — объект класса GreenFunction.m, содержащий f_s(z) T — температура системы Tc — критическая температура сверхпроводника lambda — константа спаривания

Выход:

newDelta — [1 x zN] массив значений нового параметра порядка Δ(z)

SFIMatsubaraSelfConsistencyLoopProcedure(calculation, ODEFunc, BCFunc, InitialGuessFunc)

SFIMatsubaraSelfConsistencyLoopProcedure — основной самосогласованный цикл для решения уравнений Узаделя в технике Мацубары (SC-FI или FI-SC-FI).

Рефакторированная версия: использует именованные индексы из метода getRiccatiIndices() класса Riccati вместо «магических чисел». Логирование осуществляется через статический класс Logger.

Сигнатура:

calculation = SFIMatsubaraSelfConsistencyLoopProcedure(calculation, ODEFunc, BCFunc, InitialGuessFunc)

Входные параметры:

calculation — объект Calculation.m со структурой расчёта; ODEFunc — функция правых частей ОДУ (напр. @SCFIMatsubaraODE); BCFunc — функция граничных условий (напр. @SCFIMatsubaraBoundary); InitialGuessFunc — функция начального приближения (напр. @SCFIMatsubaraInitialGuess);

Выход:

calculation — обновлённый объект с результатами самосогласованного решения.

SFIMatsubaraSelfConsistencyLoopProcedure_Parfor(calculation, ODEFunc, BCFunc, InitialGuessFunc)

SFIMatsubaraSelfConsistencyLoopProcedure_Parfor — параллельная версия основного самосогласованного цикла для решения уравнений Узаделя в технике Мацубары.

Оптимизации:
  • использование parallel.pool.Constant для неизменяемых данных

  • сокращение временных массивов: вывод внутри parfor в структуру

  • устранение лишних транспонирований

  • автоматическое создание пула (процессный при >=4 ядрах)

  • сборка результатов после parfor из массива структур

Требуется Parallel Computing Toolbox.

Входные и выходные параметры совпадают с последовательной версией.