Шаг 7. Расширение без правки ядра¶
Типовые расширения делаются через реестры (Скриптовый слой (Core/Scripting)), не правкой уже написанных файлов ядра.
Новый материал¶
classdef MyMaterialPhysicalConstants < SuperconductorPhysicalConstants
methods
function obj = MyMaterialPhysicalConstants()
obj.FermiEnergy_SI = ...;
obj.Sigma_SI = ...;
obj.VelocityFermy_SI = ...;
obj.FreePathLength_SI = ...;
obj.Tcritical_SI = ...;
obj.CrossSectionalArea_SI = ...;
end
end
end
MaterialRegistry.Register("MyMaterial", @MyMaterialPhysicalConstants);
cfg.Material = "MyMaterial";
Регистрация — в любом месте, выполняемом до первого использования (удобно —
в начале своего скрипта, сразу после Namespaces).
Новая физическая процедура¶
Если для представления не хватает готовой процедуры (например, для
Matsubara — см. Шаг 3. Какие величины считать), она добавляется в ProcedureMap
через RepresentationRegistry.Register, переопределяя весь entry
представления с уже дополненной картой процедур. Практически проще всего
делать такое расширение сразу в самом ядре (Metatron), а не только в
Metatron-Research, — процедура физическая, а не специфичная для одной
задачи.
Новое представление¶
Для полностью нового математического подхода (не EnergyBased и не
Matsubara) нужно предоставить RepresentationRegistry.Register(name, entry)
с entry:
Поле |
Что должно быть |
|---|---|
|
|
|
|
|
|
|
|
|
string-массив — какие процедуры считать по умолчанию |
Это тот же контракт, которому уже следуют EnergyBased и Matsubara
(см. исходники RepresentationRegistry.m в ядре) — новый пункт
регистрируется рядом, существующие два не трогаются.
Многослойные структуры (пока не реализовано)¶
CalculationConfig.Layers (массив LayerSpec) уже принимается
декларативным слоем, но CalculationBuilder сегодня требует ровно один
элемент — физическая модель многослойной структуры
(Core/Model/Structures) пока не написана. Это ближайшее направление
развития ядра: когда появится составной класс структуры, скриптовый слой
не потребует изменений — только CalculationBuilder.Build научится
понимать Layers длиннее 1.