er -4 0) (size 0 2.5)) ))
; 4)
(set! pml-layers (list (make pml (thickness 1.0)))), 5)
(set! resolution 20)
; 6)
(run-until 200 (at-beginning output-epsilon) (to-appended "ez" (at-every 0.6 output-efield-z)))
Почнемо опис програми команда за командою
) Перш ніж оголосити структуру кристала, розташування і частоту джерела та ін параметри, необхідно задати розміри розрахункової області:
(set! geometry-lattice (make lattice (size 10 серпні no-size)))
В· geometry-lattice - задає область в якій будуть проводитися розрахунки
В· size 10 серпня no-size - задаємо розміри розрахункової області. Загальний формат команди size xyz, де xyz - розмір в кожній з 3-х координат відповідно. За допомогою цієї команди ми задали двомірну область розміром 10х8. Ця команда дозволяє задавати тривимірні області, але в нашому випадку розмір уздовж осі Z не вказаний. Т.к ми не задали властивості розрахункової області, то за замовчуванням, ? = 1.
2) Тепер можна розмістити всередині небудь об'єкти. Наступна структура:
(set! geometry (list
(make block (center 0 0) (size 1.5 1.5 infinity) (material (make dielectric (epsilon 12))))
(make block (center -1.5 0) (size 1 січня infinity) (material (make dielectric (epsilon 12))))
---------------
)
описує масив елементів. Розпишемо її більш докладно:
В· (set! geometry ...) - задає об'єкти, які будуть брати участь у симуляції.
В· (list ...) - створює список елементів, які будуть брати участь у симуляції. Використовується з метою створення масивів та інших форм об'єднання структур між собою. Наприклад в If для розділення результатів true і else. Використовується практично у всіх командах. У нашому випадку list об'єднує кілька блоків в єдиний масив блоків.
В· make block - задає блок (квадрат, прямокутник - 2-у мірний випадок; прямокутний паралелепіпед - 3-х мірний). Крім цього підтримуються наступні геометричні фігури:
В· sphere radius [number] - сфера;
В· cylinder radius [number] height [number] axis [vector3] - циліндр
В· cone radius2 [number] - конус
В· ellipsoid - ел...