lign="justify"> (define-param l_place (+ (/ (+ dmin dmax) 2) 1)); задаємо координати ліній
(define mat (make dielectric (epsilon eps))); створюємо діелектрик mat з e = 12
; ----------------------------------------- -----------------------------------
(set! geometry-lattice (make lattice (size lx ly no-size))); Задаємо розміри розрахункової області
(set! geometry (list (make block (center 0 0) (size infinity infinity infinity) (material mat))))
; 2
; Заповнюємо розрахункову область діелектриком mat
(if (not no-bend?)
; Цикл по створенню отворів в діелектрику (матеріал - повітря)
(do ((x dmin (+ x ds))) ((> x dmax))
(do ((y dmin (+ y ds))) ((> y dmax))
(if (and (not (eqv? x l_place)) (not (eqv? y l_place))
(set! geometry (append geometry (list
(make cylinder (center xy) (material air) (radius r) (height infinity))
)))))))
(set! pml-layers (list (make pml (thickness dpml))))
(set! resolution 10)
; 3
(set! sources (list (make source (src (make gaussian-src (frequency fcen) (fwidth df)))
(component Ez) (center -9 0) (size 0 3))))
; 4
(define-param nfreq 100); кількість частот в діапазон [fcen-df/2; fcen + df/2]
(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))))))
; 5
(run-sources +
(stop-when-fields-decayed 50 Ez
(if no-bend?
(vector3 (- dmin 2) l_place)
(vector3 (+ dmax 2) l_place))
e-3))
; 6
(display-fluxes trans)
1) Нам знадобиться ввести в розрахункову область хвильовий пакет, для того щоб розрахувати кількість перенесеної енергії крізь кристал. Спочатку потрібно порахувати кількість енергії, що потрапляє в розрахункову зону без кристалічної структури. Це потрібно, щоб не брати в розрахунок ефекти віддзеркалення від кристала. Тільки потім можна вводити в розрахункову область кристал і пропускати через нього хвильовий пакет.
Для цих цілей використовується параметр no-bend.
No-be...