nd = true - розташовуємо в розрахунковій області тільки джерело випромінювання і проводимо перший розрахунок
No-bend = false - заново розташовуємо в розрахункової області джерело випромінювання і кристал. Виробляємо другий розрахунок. p align="justify"> Значення no-bend = false - задається в програмі за умовчанням
2) (if (not no-bend?); <текст>) - Тут і далі йде перевірка параметра No-bend . Як видно зі структури, запуск програми потрібно провести два рази. Перший раз з no-bend = true, а другий раз з no-bend = false.
3) (set! sources
(list
(make source (src
(make gaussian-src (frequency fcen) (fwidth df)))
(component Ez)
(center -9 0) (size 0 3))))
В· (make gaussian-src - задаємо гаусіановий імпульсний джерело
В· (frequency fcen) - з основною частотою fcen
В· (fwidth df) - і шириною імпульсу df
4) У цій частині програми задається в якій області простору потрібно робити розрахунки.
(define trans; кількість минулого потоку
(add-flux fcen df nfreq
(if no-bend?
(make flux-region
(center (- dmin 2) l_place) (size 0 (* 2 ds)))
(make flux-region
(center (+ dmax 2) l_place) (size 0 (* 2 ds))))))
В· (define trans - структура, в яку буде заноситися значення енергій хвилі для кожної з частот.
В· (add-flux fcen df nfreq - задає в якому діапазоні частот потрібно робити розрахунки. Nfreq - описує кількість частот з цього діапазону.
В· (make flux-region - задає область простору в якій потрібно провести розрахунок.
5) Потім задається в перебігу якого проміжку часу потрібно робити розрахунки. Існує два способи. Перший, використаний в програмі:
(run-sources +
(stop-when-fields-decayed 50 Ez
(if no-bend?
(vector3 (- dmin 2) l_place)
(vector3 (+ dmax 2) l_place))
1e-3))
В· (stop-when-fields-decayed - розрахунок проводиться доти, поки величина поля чи не стане менше певної величини. Загалом вигляді:
(stop-when-fields-decayed dT co...