))
)))
)
)
)
(set! pml-layers (list (make pml (thickness dpml))))
(set! resolution 10)
; 6
(set! sources (list (make source (src (make continuous-src (wavelength 2.5) (width 20)))
(component Ez) (center -9 0) (size 0 3))))
(run-until 200 (at-beginning output-epsilon) (to-appended "ez" (at-every 0.6 output-efield-z)))
1) Коментарі відзначаються знаком ; . Все що стоїть за ним до кінця рядка компілятором не сприймається.
2) define-param - використовується якщо нам потрібно змінити, у разі потреби, значення параметра не розплющуючи файл ctl. Перш ніж запустити компіляцію програми можна змінити один з параметрів:
meep dmax = 8 test4_42.ctl.
3) Замість того, щоб кожен раз прописувати властивості матеріалу при описі кожної ділянки структури, можна задати характеристики матеріалу у вигляді окремої змінної:
(define eps 12)
(define mat (make dielectric (epsilon eps))) - знаючи синтаксис попереднього прикладу, легко визначити, що ми визначили діелектрик з ? = 12.
4) Тепер змінну mat можна використовувати при описі структур:
(set! geometry (list (make block (center 0 0) (size infinity infinity infinity) (material mat))))
В· make block - створюємо block нескінченних розмірів посеред р
В· (size infinity infinity infinity) (material mat) - нескінченних розмірів з матеріалу mat.
В· (center 0 0) - посеред розрахункової області.
5) Наступним кроком опишемо реалізацію циклів, що формують дірки в кристалічній структурі.
Цикли реалізують одну зі схем do-loop мови Scheme.
(do ((x dmin (+ x ds))) ((> x dmax))
(do ((y dmin (+ y ds))) ((> y dmax))
<тіло циклу>
)
)
В· dmin, dmax, ds - константи, що задають мінімальне і максимальне значення лічильника циклу, ds - крок лічильника циклу
В· x dmin - цикл виконується, починаючи з x = dmin (dmin = -5)
В· (+ ...