Формат JSON для импорта материалов
JSON-формат предназначен для программной подготовки и пакетного добавления материалов в библиотеку САПР «ГАММА». Он удобен, когда набор формируется разработчиком, создаётся внешним скриптом или преобразуется из базы данных производителя.
Один файл может содержать один материал или сразу несколько материалов. При импорте записи создаются как материалы типа RFMaterial и добавляются в активный каталог библиотеки.
Импорт подготовленного файла
- Сохраните JSON-файл в кодировке UTF-8 с расширением
.json. - Откройте окно Библиотека материалов.
- Выберите вкладку каталога, в который требуется добавить материалы.
- Нажмите Импортировать материал(ы) из файла.
- Выберите подготовленный JSON-файл.
- После импорта проверьте имена, типы и основные свойства добавленных материалов.
Если имя импортируемого материала уже существует в активном каталоге, к имени новой записи добавляется суффикс #1, #2 и далее.
Общая структура файла
Минимальный корректный файл имеет следующую структуру:
{
"version": 1,
"materials": [
{
"name": "Example dielectric",
"type": "RFMaterial",
"rf_type": "Dielectric",
"properties": {
"relative_permittivity": 4.4
}
}
]
}
Корневой объект содержит два поля:
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
version | целое число | обязательное | Версия схемы JSON. Для описанного формата используется значение 1 |
materials | массив объектов | обязательное | Набор материалов, импортируемых из файла |
Описание материала
Каждый элемент массива materials представляет один материал.
| Поле | Тип | Обязательность | Допустимые значения и назначение |
|---|---|---|---|
name | строка | обязательное | Имя материала, отображаемое в библиотеке |
type | строка | необязательное | В версии схемы 1 поддерживается RFMaterial; при отсутствии поля используется это значение |
rf_type | строка | необязательное | Тип для РЧ-анализа: Metal, Dielectric или Auto |
properties | объект | необязательное | Набор пар «ключ свойства — значение» |
Регистр букв в служебных значениях необходимо сохранять. Например, следует записывать RFMaterial и Dielectric, а не rfmaterial и dielectric.
Если объект properties или отдельный ключ свойства отсутствует, соответствующие параметры материала получают значения по умолчанию, предусмотренные для RFMaterial. Поэтому отсутствие ключа и явное задание нулевого значения — не одно и то же.
Ключи свойств и единицы измерения
Числовые значения передаются в единицах, указанных в таблице. Большинство размерных величин задаётся в единицах СИ, однако намагниченность насыщения и ширина линии ферромагнитного резонанса используют гауссы и эрстеды.
| Ключ свойства | Физическая величина | Единица |
|---|---|---|
relative_permittivity | относительная диэлектрическая проницаемость (\varepsilon_r) | безразмерная |
relative_permeability | относительная магнитная проницаемость (\mu_r) | безразмерная |
dielectric_loss_tangent | тангенс угла диэлектрических потерь (\tan\delta_\varepsilon) | безразмерная |
magnetic_loss_tangent | тангенс угла магнитных потерь (\tan\delta_\mu) | безразмерная |
bulk_conductivity | объёмная электрическая проводимость (\sigma) | См/м |
thermal_conductivity | теплопроводность | Вт/(м·К) |
mass_density | плотность | кг/м³ |
specific_heat | удельная теплоёмкость | Дж/(кг·К) |
youngs_modulus | модуль Юнга | Па |
poissons_ratio | коэффициент Пуассона | безразмерная |
thermal_expansion_coeff | линейный коэффициент теплового расширения | 1/К |
magnetic_saturation | намагниченность насыщения | Гс |
lande_g_factor | фактор Ланде | безразмерная |
dH | ширина линии ферромагнитного резонанса | Э |
dH_measurement_frequency | частота, при которой измерена dH | Гц |
Обратите внимание. В интерфейсе частота измерения
dHможет отображаться в ГГц, но скалярное значениеdH_measurement_frequencyв JSON задаётся в герцах. Например, 9,4 ГГц следует записать как9.4e9.
Способы задания значения свойства
В версии схемы 1 поддерживаются четыре способа представления значения:
- скаляр —
scalar; - анизотропное значение в главных осях —
anisotropic; - полный тензор (3\times3) —
tensor; - частотная зависимость —
frequency.
Скалярное значение
Для постоянного изотропного свойства достаточно указать число:
"relative_permittivity": 4.4
Равнозначная развёрнутая запись:
"relative_permittivity": {"kind": "scalar", "value": 4.4}
Краткая числовая запись предпочтительна, если дополнительное описание значения не требуется.
Анизотропное значение
Анизотропное значение задаёт три диагональные компоненты свойства вдоль осей (X), (Y) и (Z):
"relative_permittivity": {
"kind": "anisotropic",
"diagonal": [3.0, 3.0, 3.4]
}
Массив diagonal должен содержать ровно три числа в порядке (X), (Y), (Z).
Полный тензор
Для свойства, компоненты которого не сводятся к диагональной матрице в системе координат модели, используется полный тензор:
"relative_permittivity": {
"kind": "tensor",
"matrix": [
[3.0, 0.1, 0.0],
[0.1, 3.0, 0.0],
[0.0, 0.0, 3.4]
]
}
Поле matrix должно содержать три строки по три числовых элемента. Порядок строк и столбцов соответствует осям (X), (Y), (Z).
Виды anisotropic и tensor поддерживаются для электромагнитных свойств:
relative_permittivity;relative_permeability;dielectric_loss_tangent;magnetic_loss_tangent.
Тепловые и механические свойства в JSON-схеме версии 1 задаются скалярами. В частности, анизотропная теплопроводность этим форматом не описывается.
Частотно-зависимое значение
Частотная зависимость задаётся таблицей пар «частота — значение»:
"relative_permittivity": {
"kind": "frequency",
"unit": "GHz",
"points": [
[0.1, 14.28],
[1.0, 14.14],
[10.0, 13.9]
]
}
Поля объекта:
| Поле | Тип | Описание |
|---|---|---|
kind | строка | Для частотной зависимости используется значение frequency |
unit | строка | Единица частоты: Hz, kHz, MHz, GHz или THz; при отсутствии поля используется GHz |
points | массив пар | Каждая пара имеет вид [частота, значение свойства] |
Частоты рекомендуется располагать по возрастанию. Числа во втором столбце задаются в единице соответствующего свойства: например, проводимость — в См/м, а относительная диэлектрическая проницаемость — безразмерным числом.
Комплексное значение свойства нельзя передать одной таблицей. Действительную часть относительной диэлектрической проницаемости задают через relative_permittivity, а потери — через dielectric_loss_tangent. Аналогично магнитные характеристики разделяют между relative_permeability и magnetic_loss_tangent.
Примеры
Металл (простые скаляры)
Следующий файл добавляет металл и анизотропный диэлектрик:
{
"name": "Copper (pure)", "type": "RFMaterial", "rf_type": "Metal",
"properties": {
"relative_permittivity": 1.0,
"relative_permeability": 1.0,
"bulk_conductivity": 5.96e7,
"thermal_conductivity": 401,
"mass_density": 8930,
"specific_heat": 390,
"youngs_modulus": 1.2e11,
"poissons_ratio": 0.33,
"thermal_expansion_coeff": 1.7e-5
}
}
Анизотропный диэлектрик
{
"name": "Anisotropic sample", "type": "RFMaterial",
"properties": {
"relative_permittivity": { "kind": "anisotropic", "diagonal": [3.0, 3.0, 3.4] },
"dielectric_loss_tangent": 0.002
}
}
Частотно-зависимый поглотитель
{
"name": "ECCOSORB MF-116", "type": "RFMaterial", "rf_type": "Dielectric",
"properties": {
"relative_permittivity": { "kind": "frequency", "unit": "GHz",
"points": [[0.1, 14.278], [1.0, 14.144], [10.0, 13.9]] },
"dielectric_loss_tangent": { "kind": "frequency", "unit": "GHz",
"points": [[0.1, 0.0019], [1.0, 0.0088], [10.0, 0.05]] },
"relative_permeability": { "kind": "frequency", "unit": "GHz",
"points": [[0.1, 3.65], [1.0, 2.1], [10.0, 1.7]] },
"magnetic_loss_tangent": { "kind": "frequency", "unit": "GHz",
"points": [[0.1, 0.012], [1.0, 0.03], [10.0, 0.05]] }
}
}
Требования к синтаксису
- файл должен быть сохранён в кодировке UTF-8;
- в дробных числах используется точка:
4.4, а не4,4; - допускается экспоненциальная запись, например
5.96e7или9.4e9; - имена полей и служебные строковые значения записываются в указанном регистре;
- стандарт JSON не допускает комментарии, завершающие запятые, значения
NaNиInfinity; - массив
diagonalдолжен содержать три числа; - массив
matrixдолжен иметь размер (3x3); - каждый элемент
pointsдолжен содержать два числа: частоту и значение; - для частотной зависимости следует использовать одну из поддерживаемых единиц
Hz,kHz,MHz,GHz,THz.
Перед передачей файла пользователю рекомендуется проверить его любым валидатором JSON, а затем выполнить пробный импорт в отдельный пользовательский каталог.
Ограничения формата версии 1
Формат JSON версии 1 предназначен для передачи основных свойств материалов и не поддерживает импорт:
- шести оптических коэффициентов;
- температурных зависимостей свойств;
- дополнительных сведений о материале, например данных о производителе, источнике значений и условиях измерения.
Если эти сведения необходимы для моделирования, поставщик библиотеки материалов или производитель материала должен предоставить их отдельно — например, в технической документации или паспорте материала. После импорта файла соответствующие параметры можно задать вручную через интерфейс САПР «ГАММА».
Добавлять неподдерживаемые параметры непосредственно в JSON-файл не рекомендуется: при импорте они не будут обработаны программой.
Контрольный список разработчика
Перед публикацией набора материалов проверьте:
- В корне находятся поля
versionиmaterials. - Значение
versionравно1. - Каждый материал имеет непустое уникальное имя.
- Для
typeиспользуетсяRFMaterial. - Значение
rf_typeсоответствует физической модели:Metal,DielectricилиAuto. - Ключи свойств взяты из справочной таблицы без изменения регистра.
- Все размерные значения переведены в требуемые единицы.
- Значение
dH_measurement_frequencyпереведено в герцы. - Размеры массивов
diagonal,matrixиpointsсоответствуют формату. - Частотные точки охватывают рабочий диапазон расчёта.
- JSON проходит синтаксическую проверку.
- После пробного импорта значения в таблице и окне свойств совпадают с исходными данными.