Распространение радиоволн ВЧ/Метод зеркальных отображений: различия между версиями
Nigiluk (обсуждение | вклад) (→Модель) |
Nigiluk (обсуждение | вклад) |
||
Строка 176: | Строка 176: | ||
######<math>\rho \leftarrow stack_{\rho}</math> | ######<math>\rho \leftarrow stack_{\rho}</math> | ||
######<math>t_{mn} \leftarrow stack_t</math> | ######<math>t_{mn} \leftarrow stack_t</math> | ||
====Возможности распараллеливания==== | |||
<graphviz size=500px> | |||
digraph image_source_EM_parallel_run{ | |||
rankdir=LR; | |||
node[fontsize=14]; | |||
edge[fontsize=14]; | |||
G0[label="ВХОД"]; | |||
G1[label="1"]; | |||
G2_1[label="2"]; | |||
G3_1[label="3"]; | |||
G4_1[label="4"]; | |||
G5_1[label="5"]; | |||
G2_2[label="2"]; | |||
G3_2[label="3"]; | |||
G4_2[label="4"]; | |||
G5_2[label="5"]; | |||
G6_1_1[label="6"]; | |||
G6_1_2[label="6"]; | |||
G6_2_1[label="6"]; | |||
G6_2_2[label="6"]; | |||
G7_1_1_1[label="7.1"]; | |||
G7_3_1_1[label="7.3"]; | |||
G7_4_1_1_1[label="7.4"]; | |||
G7_4_1_1_2[label="7.4"]; | |||
G7_5_1_1_1_1[label="7.5"]; | |||
G7_13_1_1_1_1[label="7.13"]; | |||
G7_5_1_1_1_2[label="7.5"]; | |||
G7_13_1_1_1_2[label="7.13"]; | |||
G7_5_1_1_2_1[label="7.5"]; | |||
G7_13_1_1_2_1[label="7.13"]; | |||
G7_5_1_1_2_2[label="7.5"]; | |||
G7_13_1_1_2_2[label="7.13"]; | |||
G7_14_1_1_1[label="7.14"]; | |||
G7_14_1_1_2[label="7.14"]; | |||
G7_15_1_1[label="7.15"]; | |||
G7_16_1_1[label="7.16"]; | |||
G7_17_1_1_1[label="7.17"]; | |||
G7_24_1_1_1[label="7.24"]; | |||
G7_17_1_1_2[label="7.17"]; | |||
G7_24_1_1_2[label="7.24"]; | |||
G7_25_1_1[label="7.25"]; | |||
G7_32_1_1[label="7.32"]; | |||
G7_1_1_2[label="7.1"]; | |||
G7_3_1_2[label="7.3"]; | |||
G7_4_1_2_1[label="7.4"]; | |||
G7_4_1_2_2[label="7.4"]; | |||
G7_5_1_2_1_1[label="7.5"]; | |||
G7_13_1_2_1_1[label="7.13"]; | |||
G7_5_1_2_1_2[label="7.5"]; | |||
G7_13_1_2_1_2[label="7.13"]; | |||
G7_5_1_2_2_1[label="7.5"]; | |||
G7_13_1_2_2_1[label="7.13"]; | |||
G7_5_1_2_2_2[label="7.5"]; | |||
G7_13_1_2_2_2[label="7.13"]; | |||
G7_14_1_2_1[label="7.14"]; | |||
G7_14_1_2_2[label="7.14"]; | |||
G7_15_1_2[label="7.15"]; | |||
G7_16_1_2[label="7.16"]; | |||
G7_17_1_2_1[label="7.17"]; | |||
G7_24_1_2_1[label="7.24"]; | |||
G7_17_1_2_2[label="7.17"]; | |||
G7_24_1_2_2[label="7.24"]; | |||
G7_25_1_2[label="7.25"]; | |||
G7_32_1_2[label="7.32"]; | |||
G7_1_2_1[label="7.1"]; | |||
G7_3_2_1[label="7.3"]; | |||
G7_4_2_1_1[label="7.4"]; | |||
G7_4_2_1_2[label="7.4"]; | |||
G7_5_2_1_1_1[label="7.5"]; | |||
G7_13_2_1_1_1[label="7.13"]; | |||
G7_5_2_1_1_2[label="7.5"]; | |||
G7_13_2_1_1_2[label="7.13"]; | |||
G7_5_2_1_2_1[label="7.5"]; | |||
G7_13_2_1_2_1[label="7.13"]; | |||
G7_5_2_1_2_2[label="7.5"]; | |||
G7_13_2_1_2_2[label="7.13"]; | |||
G7_14_2_1_1[label="7.14"]; | |||
G7_14_2_1_2[label="7.14"]; | |||
G7_15_2_1[label="7.15"]; | |||
G7_16_2_1[label="7.16"]; | |||
G7_17_2_1_1[label="7.17"]; | |||
G7_24_2_1_1[label="7.24"]; | |||
G7_17_2_1_2[label="7.17"]; | |||
G7_24_2_1_2[label="7.24"]; | |||
G7_25_2_1[label="7.25"]; | |||
G7_32_2_1[label="7.32"]; | |||
G7_1_2_2[label="7.1"]; | |||
G7_3_2_2[label="7.3"]; | |||
G7_4_2_2_1[label="7.4"]; | |||
G7_4_2_2_2[label="7.4"]; | |||
G7_5_2_2_1_1[label="7.5"]; | |||
G7_13_2_2_1_1[label="7.13"]; | |||
G7_5_2_2_1_2[label="7.5"]; | |||
G7_13_2_2_1_2[label="7.13"]; | |||
G7_5_2_2_2_1[label="7.5"]; | |||
G7_13_2_2_2_1[label="7.13"]; | |||
G7_5_2_2_2_2[label="7.5"]; | |||
G7_13_2_2_2_2[label="7.13"]; | |||
G7_14_2_2_1[label="7.14"]; | |||
G7_14_2_2_2[label="7.14"]; | |||
G7_15_2_2[label="7.15"]; | |||
G7_16_2_2[label="7.16"]; | |||
G7_17_2_2_1[label="7.17"]; | |||
G7_24_2_2_1[label="7.24"]; | |||
G7_17_2_2_2[label="7.17"]; | |||
G7_24_2_2_2[label="7.24"]; | |||
G7_25_2_2[label="7.25"]; | |||
G7_32_2_2[label="7.32"]; | |||
G8_1[label="8"]; | |||
G14_1[label="14"]; | |||
G8_2[label="8"]; | |||
G14_2[label="14"]; | |||
G15[label="15"]; | |||
SKIP_1[label="...", shape="none"]; | |||
SKIP_2[label="...", shape="none"]; | |||
SKIP_3[label="...", shape="none"]; | |||
SKIP_4[label="...", shape="none"]; | |||
SKIP_5[label="...", shape="none"]; | |||
SKIP_6[label="...", shape="none"]; | |||
SKIP_7[label="...", shape="none"]; | |||
SKIP_8[label="...", shape="none"]; | |||
SKIP_9[label="...", shape="none"]; | |||
SKIP_10[label="...", shape="none"]; | |||
//SKIP_11[label="...", shape="none"]; | |||
SKIP_12[label="...", shape="none"]; | |||
SKIP_13[label="...", shape="none"]; | |||
SKIP_14[label="...", shape="none"]; | |||
SKIP_15[label="...", shape="none"]; | |||
SKIP_16[label="...", shape="none"]; | |||
SKIP_17[label="...", shape="none"]; | |||
SKIP_18[label="...", shape="none"]; | |||
SKIP_19[label="...", shape="none"]; | |||
SKIP_20[label="...", shape="none"]; | |||
SKIP_21[label="...", shape="none"]; | |||
SKIP_22[label="...", shape="none"]; | |||
SKIP_23[label="...", shape="none"]; | |||
SKIP_24[label="...", shape="none"]; | |||
SKIP_25[label="...", shape="none"]; | |||
SKIP_26[label="...", shape="none"]; | |||
SKIP_27[label="...", shape="none"]; | |||
SKIP_28[label="...", shape="none"]; | |||
SKIP_29[label="...", shape="none"]; | |||
SKIP_30[label="...", shape="none"]; | |||
SKIP_31[label="...", shape="none"]; | |||
G0->G1->{G2_1, G2_2} | |||
G2_1->G3_1->G4_1->G5_1->{G6_1_1, G6_1_2} | |||
G6_1_1->G7_1_1_1 | |||
G6_1_2->G7_1_1_2 | |||
{G7_32_1_1, G7_32_1_2}->G8_1->SKIP_30->G14_1 | |||
G2_2->G3_2->G4_2->G5_2->{G6_2_1, G6_2_2} | |||
G6_2_1->G7_1_2_1 | |||
G6_2_2->G7_1_2_2 | |||
{G7_32_2_1, G7_32_2_2}->G8_2->SKIP_31->G14_2 | |||
{G14_1, G14_2}->G15->"ВЫХОД" | |||
G7_1_1_1->G7_3_1_1->{G7_4_1_1_1, G7_4_1_1_2} | |||
G7_4_1_1_1->{G7_5_1_1_1_1, G7_5_1_1_1_2} | |||
G7_5_1_1_1_1->SKIP_1->G7_13_1_1_1_1 | |||
G7_5_1_1_1_2->SKIP_2->G7_13_1_1_1_2 | |||
{G7_13_1_1_1_1, G7_13_1_1_1_2}->G7_14_1_1_1 | |||
G7_4_1_1_2->{G7_5_1_1_2_1, G7_5_1_1_2_2} | |||
G7_5_1_1_2_1->SKIP_3->G7_13_1_1_2_1 | |||
G7_5_1_1_2_2->SKIP_4->G7_13_1_1_2_2 | |||
{G7_13_1_1_2_1, G7_13_1_1_2_2}->G7_14_1_1_2 | |||
{G7_14_1_1_1, G7_14_1_1_2}->G7_15_1_1->G7_16_1_1->{G7_17_1_1_1, G7_17_1_1_2} | |||
G7_17_1_1_1->SKIP_5->G7_24_1_1_1 | |||
G7_17_1_1_2->SKIP_6->G7_24_1_1_2 | |||
{G7_24_1_1_1, G7_24_1_1_2}->G7_25_1_1->SKIP_15->G7_32_1_1 | |||
G7_1_1_2->G7_3_1_2->{G7_4_1_2_1, G7_4_1_2_2} | |||
G7_4_1_2_1->{G7_5_1_2_1_1, G7_5_1_2_1_2} | |||
G7_5_1_2_1_1->SKIP_18->G7_13_1_2_1_1 | |||
G7_5_1_2_1_2->SKIP_19->G7_13_1_2_1_2 | |||
{G7_13_1_2_1_1, G7_13_1_2_1_2}->G7_14_1_2_1 | |||
G7_4_1_2_2->{G7_5_1_2_2_1, G7_5_1_2_2_2} | |||
G7_5_1_2_2_1->SKIP_16->G7_13_1_2_2_1 | |||
G7_5_1_2_2_2->SKIP_17->G7_13_1_2_2_2 | |||
{G7_13_1_2_2_1, G7_13_1_2_2_2}->G7_14_1_2_2 | |||
{G7_14_1_2_1, G7_14_1_2_2}->G7_15_1_2->G7_16_1_2->{G7_17_1_2_1, G7_17_1_2_2} | |||
G7_17_1_2_1->SKIP_7->G7_24_1_2_1 | |||
G7_17_1_2_2->SKIP_8->G7_24_1_2_2 | |||
{G7_24_1_2_1, G7_24_1_2_2}->G7_25_1_2->SKIP_12->G7_32_1_2 | |||
G7_1_2_1->G7_3_2_1->{G7_4_2_1_1, G7_4_2_1_2} | |||
G7_4_2_1_1->{G7_5_2_1_1_1, G7_5_2_1_1_2} | |||
G7_5_2_1_1_1->SKIP_20->G7_13_2_1_1_1 | |||
G7_5_2_1_1_2->SKIP_21->G7_13_2_1_1_2 | |||
{G7_13_2_1_1_1, G7_13_2_1_1_2}->G7_14_2_1_1 | |||
G7_4_2_1_2->{G7_5_2_1_2_1, G7_5_2_1_2_2} | |||
G7_5_2_1_2_1->SKIP_22->G7_13_2_1_2_1 | |||
G7_5_2_1_2_2->SKIP_23->G7_13_2_1_2_2 | |||
{G7_13_2_1_2_1, G7_13_2_1_2_2}->G7_14_2_1_2 | |||
{G7_14_2_1_1, G7_14_2_1_2}->G7_15_2_1->G7_16_2_1->{G7_17_2_1_1, G7_17_2_1_2} | |||
G7_17_2_1_1->SKIP_9->G7_24_2_1_1 | |||
G7_17_2_1_2->SKIP_10->G7_24_2_1_2 | |||
{G7_24_2_1_1, G7_24_2_1_2}->G7_25_2_1->SKIP_13->G7_32_2_1 | |||
G7_1_2_2->G7_3_2_2->{G7_4_2_2_1, G7_4_2_2_2} | |||
G7_4_2_2_1->{G7_5_2_2_1_1, G7_5_2_2_1_2} | |||
G7_5_2_2_1_1->SKIP_24->G7_13_2_2_1_1 | |||
G7_5_2_2_1_2->SKIP_25->G7_13_2_2_1_2 | |||
{G7_13_2_2_1_1, G7_13_2_2_1_2}->G7_14_2_2_1 | |||
G7_4_2_2_2->{G7_5_2_2_2_1, G7_5_2_2_2_2} | |||
G7_5_2_2_2_1->SKIP_26->G7_13_2_2_2_1 | |||
G7_5_2_2_2_2->SKIP_27->G7_13_2_2_2_2 | |||
{G7_13_2_2_2_1, G7_13_2_2_2_2}->G7_14_2_2_2 | |||
{G7_14_2_2_1, G7_14_2_2_2}->G7_15_2_2->G7_16_2_2->{G7_17_2_2_1, G7_17_2_2_2} | |||
G7_17_2_2_1->SKIP_28->G7_24_2_2_1 | |||
G7_17_2_2_2->SKIP_29->G7_24_2_2_2 | |||
{G7_24_2_2_1, G7_24_2_2_2}->G7_25_2_2->SKIP_14->G7_32_2_2 | |||
} | |||
</graphviz> |
Версия 00:59, 21 июня 2017
Модель
Метод изображений (метод зеркальных отображений) широко применяется в электростатике и электродинамике для решения краевых задач. В частности, в приближении геометрической оптики данный метод позволяет построить картину хода лучей при любом числе отражений.
Суть метода состоит в построении лучей относительно мнимых изображений источника или приемника сигнала. Мнимые изображении строятся согласно правилам построения изображений в системе зеркал, здесь зеркала повторяют форму граничных поверхностей.
На рисунке представлена типичная ситуация в условиях плотной городской застройки, когда антенна приемного устройства находится в области геометрической тени относительно источника сигнала. Сигнал на приемной антенне является результатом переотражения радиоволны от внешней границы зданий, т.н. канал Релея. Зная координаты источника и приемника можно провести точную трассировку лучей с помощью простых геометрических построений.
Алгоритм
Инициализация функций
Функция трассировки
[Источник_2, B]=Tracing(I, Стек_точек, Стек_граней, Источник_1, Частота, G)
- Источник_1
- Пока
- Стек_точек
- Стек_граней
- .Антенна().Позиция()
- Луч().Создать( , Вектор( , ,1))
- .Пересечение( .Плоскость грани())
- Если
- .Угол пересечения( .Плоскость грани())
- Вторичный источник при рейтрейсинге.Создать( .Напряженность(Частота, , G.Среда распространения), , , )
.Принадлежность( ) Расстояние( ) Расстояние( ) НЕ IsShadowed( , , G)
- Иначе
- ЛОЖЬ
- ВЫХОД
- Источник_2
- ИСТИНА
- ВЫХОД
Рекурсия
NewLevel(I, Стек_точек, Стек_граней, Источник_1, Контрольная_точка, Частота, G)
- Стек_точек
- Стек_граней
- Источник_1
- Частота
- Контрольная_точка
- G.Множество отражающих объектов()
- ВЫХОД
Предикат последнего отражения
IsEnd(E, I, i)
В связи с тем, что количество элементарных модельных экспериментов, а следовательно и временные издержки алгоритма, зависит от числа отражающих поверхностей
и порядка отражения как , то важно определить максимальный существенный для текущих условий порядок переотражения сигнала. Введем предикат последнего отражения следующим образом:1. Если
, где- - пренебрежимый уровень сигнала
- .Напряженность( , .Позиция(), G.Среда распространения())
2. Если
, где- - жестко ограниченный пользователем порядок переотражения
3. Если
- - ограниченное пользователем максимальное число раз неприхода сигнала подряд
- - порядки переотражения, при которых сигнал пришел в контрольную точку
, где
Таким образом данный предикат имеет следующий вид IsEnd(E, I, i)
Предикат тени
IsShadowed(Луч, Точка, G)
Данный предикат проверяет наличие препятствия на пути Луча в некоторую точку P путем проверки нахождения отражающих объектов из множества G.Множество отражающих объектов(), где G - геометрическая модель, на отрезке Луч.Позиция() - P, исключая поверхности, на которых лежат P и Луч.Позиция(), если такие отражающие поверхности существуют.
- Точка
- G.Множество отражающих объектов()
- Вернуть ЛОЖЬ
Предусловия
- аналог стековой памяти, хранящей информацию о занесенных в нее отражающих поверхностей
- , где
- хранятся в виде ссылок на соответствующие элементы.
Операции
и аналогичны операциям push и pop соответственно. Операция копирует последний элемент стека в x без извлечения.- локальные переменные, аналогичные , использующиеся во внутренних подциклах
Операция
копирует переменную вОсновное течение
- G.Множество контрольных точек()
- G.Множество первичных источников()
- См. обсуждение к статье.
- Переход 1.1.8.1.4
- G.Множество отражающих объектов()
- .Построить зеркальное отображение(.Плоскость грани())
- Position .Антенна().Позиция()
- Ray Луч().Создать(Position, Вектор(Position,.Позиция(), 1))
- Если
- Ray.Пересечение(.Плоскость грани())
- Если .Принадлежность( ) Расстояние(Position, .Позиция()) Расстояние(Position, )
- Переход 1.1.8.1.11
- Иначе
- Переход 1.1.8.1.14
- Иначе
- Если IsShadowed(Ray, P, G)
- Переход 1.1.8.1.14
- Если
- Angle Ray.Угол пересечения(.Плоскость грани())
- Вторичный источник при рейтрейсинге.Создать(.Напряженность , Расстояние(Position, ), G.Среда распространения() Angle, )
- Переход 1.1.8.5
- .Напряженность , Расстояние(Position, .Позиция()), G.Среда распространения() ) .Зарегистрировать(
- Если См. обсуждение к статье.
- Переход 1.1.6
.Множество отражающих поверхностей()
- Если
- Переход 1.1.8
- G.Множество первичных источников()
- G.Множество контрольных точек()
- G.Множество первичных источников()
- .Антенна().Тип антенны().Амплитудно-частотная характеристика()
- G.Множество первичных источников()
Возможности распараллеливания
