1. Infrastructure¶
- class Logger¶
Bases:
handleLogger - статический класс для логирования сообщений с временными метками Использует 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:
handleSaverCalculation – сервис для сохранения результатов расчётов. Позволяет гибко управлять тем, какие данные сохранять (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:
handleTimer - класс для измерения времени выполнения задач Позволяет запустить таймер, остановить и получить отформатированную строку времени (дни:часы:минуты:секунды).
- Свойства:
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 – объект начального состояния
вычислительного конвейера
- class MatsubaraInitialConditions¶
Bases:
InitialConditionsMatsubaraInitialConditions Абстрактный класс для задания начальных условий расчётов с использованием частот Мацубары.
Наследует основные свойства задачи и начальное состояние вычислительного конвейера из класса 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:
InitialConditionsSCFIEnergyBasedInitialConditions Класс для задания начальных условий расчёта сверхпроводник– ферромагнитный интерфейс (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:
MatsubaraInitialConditionsSCFIMatsubaraInitialConditions Класс для задания начальных условий расчёта сверхпроводник– ферромагнитный интерфейс (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:
handleGreenBase - абстрактный базовый класс для функций Грина 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
3.1.2. Conductivity¶
- class Conductivity¶
3.1.3. GreenFunctions¶
- class AdvancedGreenFunction¶
Bases:
GreenBaseAdvancedGreenFunction - опережающие функции Грина (4×4) Вычисляются из запаздывающей функции Грина преобразованием:
G^A = -σ3 * (G^R)† * σ3,
где σ3 = blkdiag(σ3, σ3), σ3 = diag(1, -1).
- class KeldyshGreenFunction¶
Bases:
GreenBaseKeldyshGreenFunction - класс функций Грина типа 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)
- class RetardedGreenFunction¶
Bases:
GreenBaseRetardedGreenFunction - класс запаздывающих функций Грина (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:
SuperconductorPhysicalConstantsAluminumPhysicalConstants Класс для хранения физических констант алюминия как сверхпроводникового материала. Наследует все вычисляемые свойства и методы из SuperconductorPhysicalConstants.
- Задает характерные параметры алюминия:
Энергия Ферми (Дж)
Удельная проводимость в нормальном состоянии (См/м)
Скорость Ферми (м/с)
Длина свободного пробега (м)
Критическая температура (К)
Площадь поперечного сечения (м²)
Эти значения могут использоваться для расчета коэффициента диффузии, вектора Ферми, плотности состояний и других параметров сверхпроводника.
- Constructor Summary
- AluminumPhysicalConstants()¶
Конструктор класса AluminumPhysicalConstants
Инициализирует все основные физические параметры алюминия в СИ:
FermiEnergy_SI – энергия Ферми (Дж) Sigma_SI – удельная проводимость (См/м) VelocityFermy_SI – скорость Ферми (м/с) FreePathLength_SI – длина свободного пробега (м) Tcritical_SI – критическая температура (К) CrossSectionalArea_SI – площадь поперечного сечения (м²)
- class NiobiumPhysicalConstants¶
Bases:
SuperconductorPhysicalConstantsNiobiumPhysicalConstants Класс для хранения физических констант ниобия как сверхпроводникового материала. Наследует все вычисляемые свойства и методы из 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:
handleCalculatedPhysicalProperties Абстрактный базовый класс для хранения вычисленных физических свойств слоя.
Данный класс служит интерфейсом, определяющим общие свойства для всех объектов, в которых сохраняются результаты вычислений.
- Свойства (абстрактные):
TaskName – имя задачи (строка), например «Matsubara SC-FI task» PhysicsPipelineEndState – объект, описывающий конечное состояние
физического пайплайна (наследник PhysicsPipelineState)
5. SFI¶
- class SFIEnergyBasedCalculatedPhysicalProperties¶
Bases:
CalculatedPhysicalPropertiesSFIENERGYBASEDCALCULATEDPHYSICALPROPERTIES - Класс для хранения результатов расчёта в энергетическом представлении для структур 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:
CalculatedPhysicalPropertiesSCFIMatsubaraCalculatedPhysicalProperties Класс для хранения вычисленных физических свойств задачи самосогласованного расчета в представлении Мацубары (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:
handleSplitting - абстрактный класс для хранения и создания сеток Содержит общие свойства для координатной и энергетической сеток. Дочерние классы должны переопределить 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:
SplittingEnergyBasedSplitting - неравномерные сетки для энергетической модели Алгоритм построения основан на классе 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:
SplittingMatsubaraSplitting - класс для сеток по координате и частотам (Мацубара) Наследует 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¶
- class SCFIMatsubaraPhysicsPipelineState¶
Bases:
PhysicsPipelineStateSCFIMatsubaraPhysicsPipelineState Класс, описывающий состояние вычислительного конвейера для задачи типа Matsubara SC-FI (сверхпроводник–ферромагнитный изолятор).
Наследует базовое свойство TaskName от PhysicsPipelineState и добавляет дополнительный флаг для управления расчётами.
- Свойства:
- CalculateOrderParameter – логический флаг (true/false),
указывает, требуется ли вычисление параметра порядка в рамках данного шага расчёта. По умолчанию false.
- Конструктор:
Инициализирует свойство TaskName значением «Matsubara SC-FI task» для идентификации этапа.
7.1. Structures¶
8. Layers¶
- class SuperconductorLayer(None)¶
Bases:
handleSuperconductorLayer Класс для описания сверхпроводникового слоя.
Хранит параметры слоя: материал, длину, температуру и т.д.
- Свойства:
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.
- Выполняет:
Инициализацию статического логгера.
Инициализацию вычисляемых свойств (если отсутствуют).
Запуск таймера.
Запуск самосогласованного цикла (последовательно или параллельно).
Сохранение результатов и времени выполнения.
Автоматическое закрытие лога при ошибке (через onCleanup).
- Вход:
calculation — структура/объект с полями: TaskName, Split, stepsN, … isParOnCPU — логический флаг: true — параллельная версия (parfor),
false — последовательная версия.
- Выход:
- calculation — обновлённая структура с полями Ric, GreenMatrix,
OrderParameter, LastStep, RelativeChange, CalculationTime, Data.
- RunSFIMatsubaraPipeline(calculation, isParOnCPU)¶
RunSFIMatsubaraPipeline — конвейер полного расчёта уравнений Узаделя в технике Мацубары с использованием статического Logger и класса Timer.
- Выполняет:
Инициализацию статического логгера (создание папки по дате в Config.LogsFolder).
Инициализацию объекта CalculatedPhysicalProperties (если отсутствует).
Запуск таймера.
Запуск самосогласованного цикла SCFIMatsubaraSelfConsistencyLoopProcedure.
Сохранение времени выполнения и метаданных в объект calculation.
Автоматическое закрытие лог-файла даже при ошибке (через 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.
Входные и выходные параметры совпадают с последовательной версией.