Перейти к основному содержимому

Формат JSON для импорта материалов

JSON-формат предназначен для программной подготовки и пакетного добавления материалов в библиотеку САПР «ГАММА». Он удобен, когда набор формируется разработчиком, создаётся внешним скриптом или преобразуется из базы данных производителя.

Один файл может содержать один материал или сразу несколько материалов. При импорте записи создаются как материалы типа RFMaterial и добавляются в активный каталог библиотеки.

Импорт подготовленного файла

  1. Сохраните JSON-файл в кодировке UTF-8 с расширением .json.
  2. Откройте окно Библиотека материалов.
  3. Выберите вкладку каталога, в который требуется добавить материалы.
  4. Нажмите Импортировать материал(ы) из файла.
  5. Выберите подготовленный JSON-файл.
  6. После импорта проверьте имена, типы и основные свойства добавленных материалов.

Если имя импортируемого материала уже существует в активном каталоге, к имени новой записи добавляется суффикс #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 поддерживаются четыре способа представления значения:

  1. скаляр — scalar;
  2. анизотропное значение в главных осях — anisotropic;
  3. полный тензор (3\times3) — tensor;
  4. частотная зависимость — 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-файл не рекомендуется: при импорте они не будут обработаны программой.

Контрольный список разработчика

Перед публикацией набора материалов проверьте:

  1. В корне находятся поля version и materials.
  2. Значение version равно 1.
  3. Каждый материал имеет непустое уникальное имя.
  4. Для type используется RFMaterial.
  5. Значение rf_type соответствует физической модели: Metal, Dielectric или Auto.
  6. Ключи свойств взяты из справочной таблицы без изменения регистра.
  7. Все размерные значения переведены в требуемые единицы.
  8. Значение dH_measurement_frequency переведено в герцы.
  9. Размеры массивов diagonal, matrix и points соответствуют формату.
  10. Частотные точки охватывают рабочий диапазон расчёта.
  11. JSON проходит синтаксическую проверку.
  12. После пробного импорта значения в таблице и окне свойств совпадают с исходными данными.