v0.2.0 · Python · MIT

Электромагнитное рассеяние
на многослойных сферах

Open-source Python-библиотека для быстрого расчёта рассеяния, ЭПР и диаграмм направленности линз Люнеберга и сферических структур методом тензорных функций Грина. В 10³–10⁴ раз быстрее, чем full-wave решатели на МКЭ.

10³–10⁴× ускорение vs МКЭ
N слоёв произвольная структура
Python 3.9+ numpy, scipy, matplotlib

Тензорные функции Грина для слоистых сфер

Универсальный аппарат электромагнитного анализа, реализованный в виде open-source пакета и пригодный для интеграции в среды моделирования.

GreenTensor решает задачи рассеяния, дифракции и излучения электромагнитных волн на сферически-симметричных структурах с произвольным количеством диэлектрических и магнитных слоёв.

В основе лежит разложение поля по сферическим гармоникам и рекуррентный пересчёт направленных импедансов Z̄ₙ(rₗ) и Ȳₙ(rₗ) от центра сферы наружу через все слои — это позволяет получить аналитически замкнутое решение без объёмной 3D-сетки.

Метод исторически развит школой Б.А. Панченко (плоский → цилиндрический → сферический случай) и в этой реализации обобщает триадный подход в едином TGF-фреймворке. Хорошо подходит для проектирования антенн, верификации full-wave решателей и параметрических исследований.

Тензор Грина в сферических координатах

Γᵢⱼ = −j/(4π·r·r') · Σₘ εₘ cos(m(φ−φ')) × Σₙ (2n+1)/(n(n+1)) · ((n−m)!)/((n+m)!) × (Gᵢⱼᴱ · jgᵢⱼ + Gᵢⱼᴴ · jfᵢⱼ)
Gᵢⱼᴱ, Gᵢⱼᴴ — электрический и магнитный тензорные компоненты; gᵢⱼ, fᵢⱼ — характеристические части (радиальные решения через сферические функции Бесселя и Ханкеля).

Что внутри библиотеки

Многослойные сферы

Произвольное число слоёв с независимыми ε и μ, включая комплексные значения для потерь.

Бистатическая ЭПР

Полные диаграммы рассеяния по углам θ и φ для VV- и HH-поляризаций. Расчёт за секунды.

Параметрический свип

Перебор по электрическому размеру k₀a, толщинам и проницаемостям — для оптимизации.

Встроенная визуализация

Полярные диаграммы, кросс-сечения, сравнение с эталонами (HFSS, аналитика) на matplotlib.

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

Каждый шаг — формула, не «чёрный ящик». Удобно для верификации и научных публикаций.

Открытый код, MIT

Свободно использовать, форкать, встраивать в коммерческие пайплайны. Без лицензионных ограничений.

Какие задачи решает GreenTensor

От проектирования антенн до бионаучных приложений — везде, где есть слоистая сфера.

01

Линзы Люнеберга

Расчёт антенных характеристик: усиление, КНД, фокусировка, апертурное распределение для классической и модифицированных линз.

02

Радиолокационная ЭПР

Моностатическая и бистатическая ЭПР сферических объектов и пассивных отражателей в широком диапазоне частот.

03

Антенны с круговой поляризацией

Многослойные сферические антенны для СВЧ-диапазона, расчёт поляризационных характеристик и кросс-поляризации.

04

Дифракция на покрытиях

Сферы с диэлектрическими и поглощающими покрытиями, проводящие ядра, оценка маскировочных свойств.

05

Компактные отражатели для БПЛА

Широкополосные пассивные отражатели на базе линз Люнеберга для малых беспилотных платформ.

06

Биоэлектромагнетика

Рассеяние на модели головы человека (многослойная сферическая аппроксимация) — публикация USBEREIT 2024.

07

Верификация HFSS / CST

Эталонные расчёты для валидации full-wave решателей на канонических задачах с известным решением.

08

Гибридные модели

Использование как быстрого модуля внутри пайплайнов системного проектирования антенных решёток.

От clone до первой диаграммы рассеяния — 5 минут

1

Установить из PyPI

Все зависимости (numpy, scipy, matplotlib) подтянутся автоматически.

pip install GreenTensor
2

Или склонировать репозиторий с примерами

Готовые скрипты в каталоге examples/.

git clone https://github.com/Den1sovDm1triy/GreenTensor.git
3

Запустить эталонный расчёт

Бистатическая ЭПР 4-слойной линзы Люнеберга (k₀a = 5).

python "Luneburg Lens Bistatic RCS.py"
4

Открыть в Google Colab

Без локальной установки — нажать «Open in Colab» в README репозитория.

Открыть GitHub →
install.sh
# Установка через PyPI
pip install GreenTensor

# Или из исходников с примерами
git clone https://github.com/Den1sovDm1triy/GreenTensor.git
cd GreenTensor

# Зависимости: numpy ≥1.24, scipy ≥1.10, matplotlib ≥3.5
pip install -r requirements.txt

# Запуск примера №1 — бистатическая ЭПР линзы Люнеберга
cd "examples/Example 1 - Luneburg Lens Bistatic RCS"
python "Luneburg Lens Bistatic RCS.py"

4-слойная линза Люнеберга, k₀a = 5

Сравнение с результатами Greenwood & Jin (1999) — точное соответствие на бистатической ЭПР.

Постановка задачи

Дискретизованная линза Люнеберга — сфера, разбитая на 4 концентрических слоя с убывающей диэлектрической проницаемостью наружу. Закон n(r/a) = √(2 − (r/a)²) обеспечивает идеальную фокусировку плоской волны в точку на противоположной стороне.

Параметры

k₀
5 (электрический радиус)
n_layers
4 (последний — воздух)
радиусы a
[0.53, 0.75, 0.93, 1.0]
ε по слоям
[1.86, 1.57, 1.28, 1.0]
μ по слоям
[1, 1, 1, 1]
точность
toch = 10 (порядок ряда)

Результат: две полярные диаграммы (VV-pol и HH-pol) бистатической ЭПР в дБ, расчёт занимает менее секунды на ноутбуке.

luneburg_bistatic_rcs.py
import math
import numpy as np
import scipy.special
import matplotlib.pyplot as plt

# --- Геометрия и материалы ---
k0   = 5           # электрический размер k₀·a
toch = 10          # порядок ряда сферических гармоник
n    = 4           # число слоёв (последний — воздух)

a    = [0.53, 0.75, 0.93, 1.0]
eps  = [1.86, 1.57, 1.28, 1.0]
miy  = [1, 1, 1, 1]

# --- Запуск расчёта ---
# Рекуррентно считаются Z̄ₙ(rₗ), Ȳₙ(rₗ) изнутри наружу,
# затем коэффициенты Mₙ, Nₙ и финальные θ/φ-компоненты поля.

teta     = np.linspace(0.01, 2*math.pi, 720)
sigma_t  = compute_bistatic_rcs(k0, a, eps, miy, toch, teta, pol='VV')
sigma_p  = compute_bistatic_rcs(k0, a, eps, miy, toch, teta, pol='HH')

# --- Полярные диаграммы рассеяния ---
fig, axs = plt.subplots(1, 2, figsize=(10, 5),
                        subplot_kw={'projection': 'polar'})
axs[0].plot(teta, 10*np.log10(sigma_t), color='#00ff9c')
axs[0].set_title('Bistatic RCS, dB · VV-pol')
axs[1].plot(teta, 10*np.log10(sigma_p), color='#21d68a')
axs[1].set_title('Bistatic RCS, dB · HH-pol')
plt.show()

Результаты расчётов и сравнение с HFSS

Открытые тесты на 4-слойной линзе Люнеберга. GreenTensor сходится с full-wave решателем Ansys HFSS на главных лепестках до долей децибела и воспроизводит классические результаты Greenwood & Jin (1999). Все скрипты и CSV-данные — в каталоге examples/ репозитория.

GreenTensor vs HFSS — φ=0°, бистатическая диаграмма рассеяния линзы Люнеберга
GREENTENSOR vs HFSS · φ = 0°

4-слойная линза Люнеберга — главная плоскость

Бистатическая диаграмма рассеяния в E-плоскости. Аналитическая кривая GreenTensor (оранжевая) совпадает с full-wave Ansys HFSS (синий пунктир) на главном лепестке и ближних боковых до уровня −40 дБ.

4 слояk₀a = 5VV-pol
GreenTensor — VV/HH полярные диаграммы рассеяния
GREENTENSOR · ВЫВОД

Полные полярные диаграммы — VV и HH

Чистый вывод библиотеки: бистатическая ЭПР для двух поляризаций одновременно. Расчёт всей пары — менее секунды на ноутбуке для toch = 10 (порядок сферических гармоник).

VV + HH720 точек< 1 с
Сравнение с эталонными данными Greenwood & Jin (1999)
ЛИТЕРАТУРНАЯ ВАЛИДАЦИЯ

Сравнение с Greenwood & Jin (1999)

Кардиоидная диаграмма рассеяния линзы Люнеберга при k₀a = 5. Сплошная кривая — GreenTensor, кружки — эталон из статьи «A novel efficient algorithm for scattering from a multilayer sphere» (Greenwood & Jin, IEEE TAP 1999).

k₀a = 54 слояIEEE TAP 1999

Калькулятор слоистого профиля линз

Выберите тип градиентной линзы, задайте число слоёв L — и получите оптимизированное минимаксное приближение профиля ε(r), радиусы концентрических оболочек и долю воздуха для 3D-печати по модели Максвелла–Гарнетта.

Тип линзы
Слоёв L = 4
Непрерывный профиль ε(r)
Ступенчатое приближение
Ошибка аппроксимации
ε_max (центр)
ε_min (край)
Δε / слой
Max ошибка
V_air, слой 1
Параметры слоёв · оптимизированное минимаксное приближение
k r_вн, мм r_нар, мм r_нар / R ε_k V_air (МГ) Δε
Расчёт использует модель Максвелла–Гарнетта с матрицей ε_m = 2.67 (PLA / ABS), tan δ = 0.009. Радиус линзы фиксирован на R = 36.5 мм (типичный размер для X-диапазона). Полученные параметры — стартовая геометрия для full-wave-расчёта в GreenTensor: вектор a = [r₁/R … rₗ/R] и eps = [ε₁ … εₗ] напрямую подставляются в compute_bistatic_rcs(...).

Открыть веб-расчётчик

Полный RCSCalculator и ScatteringCalculator в отдельном окне с 3D-редактором задачи: задаёте слои сферы — структура отрисовывается в реальном времени, расчёт идёт локально через Pyodide (CPython + numpy + scipy в WebAssembly).

движок · Pyodide 0.27 (CPython 3.12 + numpy + scipy)
первая загрузка · ~10–12 МБ, далее офлайн из кеша
расчёт · локально, без бэкенда, данные не уходят
ядро · тот же calc.py, что и десктопная библиотека

Публикации в IEEE и Scopus

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

Разработчики и научное сопровождение

GreenTensor — результат работы школы радиофизики УрФУ и преемственности от трёх поколений исследователей. Здесь — основные участники, упомянутые в коммитах и научных публикациях.

ДД
Денисов Дмитрий Вадимович Lead developer · автор архитектуры УрФУ · к.т.н., доцент

Автор библиотеки и постановки задачи. Кандидатская диссертация (НГТУ, 2015) по антенным характеристикам линз Люнеберга при круговой поляризации; готовится докторская по специальности 2.2.14. Реализовал TGF-аппарат от скриптов 2015 г. до open-source-пакета.

Lead 17 ВАК 10 Scopus/WoS Монография 2017
СИ
Скуматенко Илья Олегович Co-developer УрФУ · аспирант

Соразработчик библиотеки. Соавтор обеих ключевых IEEE-публикаций 2024: EDM (multilayer scattering) и USBEREIT (human head model). Также участник работы 2016 г. «Тензорные функции Грина для слоистых сферических структур» (Вестник СибГУТИ).

IEEE EDM 2024 IEEE USBEREIT 2024
ФВ
Фадеев Виктор Олегович Co-author УрФУ

Соавтор первой публикации о библиотеке — IEEE EDM 2024: «GreenTensor Electromagnetic Library for Calculate Scattering on Multilayer Spherical Structures», DOI 10.1109/EDM61683.2024.10615009. Участник тестирования и валидации.

IEEE EDM 2024
ШМ
Шестеров Михаил Алексеевич Co-author УрФУ

Соавтор обеих публикаций по библиотеке (IEEE EDM 2024 и IEEE USBEREIT 2024). Внёс вклад в применение GreenTensor к биоэлектромагнитной задаче — расчёт диаграмм рассеяния на многослойной сферической модели головы человека.

IEEE EDM 2024 IEEE USBEREIT 2024
КД
Кусайкин Дмитрий Валерьевич Co-author / соавтор свидетельства УрФУ · к.т.н.

Соавтор свидетельства № 2023688035 об интеграции с Ansys HFSS и серии работ по 5G MIMO-OFDM с многолучевыми линзовыми антеннами. Совместно ведёт направление 3D-печати линз Люнеберга (обзор IEEE 2024, Изв. ВУЗов. Радиоэлектроника).

5G MIMO 3D-печать Ansys HFSS
ПБ
Панченко Борис Алексеевич Научное наследие · in memoriam УрФУ · д.т.н., профессор

Основоположник применения тензорных функций Грина для слоистых сферических структур. Научный руководитель кандидатской Денисова. Соавтор монографии 2017 г., публикаций EuRAD/EuMC 2015 и свидетельства № 2017616708 — фундамент, на котором построена библиотека.

EuRAD/EuMC 2015 Монография 2017

Школа и преемственность

Метод тензорных функций Грина для сферически-слоистых структур развит школой Б. А. Панченко (Екатеринбург) на базе кафедры ВЧСРТ УрФУ. Современная open-source-реализация продолжает линию плоский → цилиндрический → сферический случай, обобщая триадный подход в едином TGF-фреймворке.

Контакты для научного сотрудничества: dv.denisov@urfu.ru. Pull-request'ы и issues — через GitHub-репозиторий.