Головна Приклади Знімки екрана Інструкція користувача Логотип Bluesky. YouTube ☰
OghmaNano Мультифізична платформа для моделювання оптоелектронних пристроїв і фотонних систем. ЗАВАНТАЖИТИ Короткий посібник зі швидкого старту

Редактор кроків: періодичне розміщення об’єктів у OghmaNano.

1. Вступ

Багато фотонних і електронних пристроїв за своєю суттю мають періодичну структуру. Для створення дифракційної решітки з розподіленим зворотним зв’язком (DFB) потрібна точно розташована серія гребенів або прорізів. Фото́нний кристал створюється з регулярної решітки діелектричних об’єктів. Плазмонна метаповерхня складається з повторюваних резонуючих елементів, розташованих на відстані, меншій за довжину хвилі. Створення цих структур шляхом додавання об’єктів один за одним було б непрактичним, тому OghmaNano пропонує редактор, який дозволяє створити один об’єкт і автоматично генерувати його копії у вказаних позиціях у тривимірному просторі.

Важливою властивістю цієї системи є те, що кожна копія має ті самі оптичні та електричні параметри, що й оригінал. Копії не є незалежними об’єктами — це група точних копій, усі вони успадковують матеріальні характеристики, властивості шарів і оптичні константи вихідного об’єкта. Це дозволяє легко змінювати всю періодичну структуру, редагуючи лише оригінал.

Редактор кроків пропонує три режими, що відрізняються рівнем складності: базовий режим для простих однорідних масивів, кристалічний режим для структур, визначених за допомогою примітивних векторів ґратки, і режим Lua-скриптів для абсолютно довільних розподілів точок.

2. Відкриття редактора кроків

Щоб відкрити редактор кроків, почніть із головного вікна симуляції OghmaNano (??). Клацніть правою кнопкою миші на об’єкті, який потрібно скопіювати, і виберіть «Редагувати об’єкт» у контекстному меню. Відкриється редактор об’єктів, який показано на ??.

В редакторі об’єктів знайдіть рядок «Кроки». У цьому рядку відображаються поточні параметри кроку: зміщення (dx, dy, dz) між копіями та кількість копій (nx, ny, nz) у кожному напрямку. Натисніть кнопку «… Редагувати» в правій частині рядка «Кроки», щоб відкрити вікно редактора кроків.

OghmaNano main simulation window showing a periodic array of objects with a right-click context menu open, highlighting the Edit object option
Клацніть правою кнопкою миші на об’єкті, який вас цікавить, у головному вікні моделювання, і виберіть «Редагувати об’єкт», щоб відкрити редактор об’єктів.
OghmaNano object editor showing the Steps row with dx, nx, dy, ny, dz, nz fields and an Edit button with three-dot access to the step editor
Редактор об’єктів. Рядок «Кроки» відображає поточну конфігурацію кроків. Натисніть кнопку «… Редагувати», щоб відкрити редактор кроків.

3. Основний режим покрокового виконання.

За замовчуванням редактор кроків відкривається в базовому режимі, як показано на ??. Цей режим є найпростішим способом створення одномірного, двомірного або тримірного масиву об’єктів. Він використовує один вектор кроку (dx, dy, dz) і повторює об’єкт відповідну кількість разів уздовж кожної осі. Поля:

Наприклад, щоб створити одномірну дифракційну структуру з 10 елементів, розташованих на відстані 209 нм один від одного вздовж осі z, встановіть dz = 209 нм, nz = 10, а значення dx і dy залиште рівними нулю. Це конфігурація, зображена на ??, яка відповідає простій періодичній структурі DFB.

OghmaNano step editor in Basic step mode showing step fields dx, dy, dz and number of objects x, y, z. dz is set to 209 nm and nz to 10, producing a 1D array along z.
Базовий режим покрокового виконання. Один вектор кроку (dx, dy, dz) і кількість об’єктів (nx, ny, nz) визначають однорідний одномірний, двомірний або тримірний масив. Тут налаштовано одномірний масив із 10 об’єктів, розташованих на відстані 209 нм один від одного вздовж осі z.
OghmaNano step editor in Crystal mode showing primitive lattice vector fields a1, a2, a3 with x, y, z components, an Origin field, and Number of objects fields.
Кристалічна модель. Три первинні вектори кристалічної ґратки a1, a2, a3 визначають елементарну комірку, і об’єкт повторюється по всій отриманій ґратці Браве.
OghmaNano step editor in Lua script mode showing a code editor with clear_points() and add_point() commands and a Refresh button to update the 3D view.
Режим скриптів Lua. Точки розміщуються у довільних координатах (x, y, z) за допомогою add_point(). Натисніть кнопку «Оновити», щоб оновити тривимірне зображення.

4. Мода кристалічної ґратки

Для структур із неортогональною або нерівномірною періодичністю натисніть кнопку «Кристал» на панелі інструментів редактора етапів, щоб перейти в режим кристалічної структури (??). У цьому режимі періодична структура визначається за допомогою трьох примітивних векторів ґратки: a1, a2 і a3. Це та сама формальна система, яка використовується в кристалографії для опису ґратки Браве.

Положення кожного об’єкта обчислюється за такою формулою:

\[ \mathbf{r}_{ijk} = \mathbf{r}_0 + i\,\mathbf{a}_1 + j\,\mathbf{a}_2 + k\,\mathbf{a}_3 \]

де i, j, k — цілочисельні індекси, що змінюються від 0 до nx−1, ny−1, nz−1 відповідно, а r₀ — початок координат. Правильно підбираючи значення a1, a2, a3, можна створити будь-яку кристалічну ґратку Браве — просту кубічну, гранецентровану кубічну, об’ємноцентровану кубічну, гексагональну або будь-яку іншу довільну неортогональну структуру.

5. Режим програмування на Lua.

Для абсолютно довільних розподілів точок — спіралей, гвинтових ліній, квазікристалів або будь-якої геометрії, яку неможливо представити у вигляді простої кристалічної гратки, редактор кроків надає інтерфейс для написання сценаріїв на мові Lua, до якого можна отримати доступ, натиснувши кнопку «Сценарій Lua» (??).

У цьому контексті доступні дві вбудовані функції:

Між цими викликами можна використовувати будь-який дійсний код Lua, зокрема цикли, умовні оператори, тригонометричні функції та генерацію випадкових чисел за допомогою math.random(). Після редагування сценарію натисніть кнопку «Оновити», щоб відновити розподіл точок і оновити тривимірне зображення.

Простий приклад – розміщення об’єктів на рівновіддалених позиціях вздовж осі z із застосуванням невеликої випадкової нерівності до кожної позиції – показано нижче. Це корисно для моделювання дефектів, що виникають під час виготовлення дифракційних структур:

clear_points()

N = 14
lambda = 240e-9
roughness = 4e-9    -- set to 0, 1e-9, 2e-9, 5e-9, etc.

z = 0.0

for n = 1, N do
    for i = 1, 10 do
        add_point(0.0, 0.0, z + (math.random() * 2.0 - 1.0) * roughness)
        z = z + lambda
    end
end

6. Приклад: гексагональна решітка.

Практичним прикладом кристалічної моделі є створення гексагональної решітки, яку можна використовувати для фотонного кристала або гексагонально впорядкованого масиву наностовпчиків. Конфігурація редактора решітки показана на ??, а отриману тривимірну структуру – на ??.

OghmaNano crystal editor configured for a hexagonal lattice. a1 is set to (3 µm, 0, 0), a2 to (1.5 µm, 2.59 µm, 0), a3 to (0, 0, 3 µm), with 3×3×3 objects.
Редактор Crystal налаштовано для гексагональної кристалічної решітки з параметром решітки 3 мкм. a1 = (3 мкм, 0, 0), a2 = (1,5 мкм, 2,59 мкм, 0), a3 = (0, 0, 3 мкм).
OghmaNano 3D simulation window showing a hexagonal array of red spheres arranged in a close-packed hexagonal pattern, viewed from above and to the side.
Отримана гексагональна решітка у тривимірному зображенні OghmaNano. Чітко видно зміщення між рядами на 60°, що відповідає вектору a2, який утворює кут 60° з вектором a1.

Основні значення такі: a2_x = a/2 = 1,5 мкм і a2_y = a√3/2 = 2,598 мкм, які разом визначають кут 60° між векторами a1 і a2, що характеризує гексагональну симетрію. Вектор a3, який лежить поза площиною, просто визначає відстань між шарами вздовж осі z.

7. Приклад: створення моделі подвійної спіралі за допомогою скриптів Lua.

Більш складним візуальним прикладом того, що може створити режим скриптів Lua, є подвійна спіраль — дві переплетені спіральні нитки, що обертаються навколо спільної осі. Цю геометричну форму неможливо представити у вигляді решітки Браве, тому потрібен інтерфейс для написання скриптів. Код Lua наведено в ??, а отриману структуру — в ??.

OghmaNano Lua script editor showing the double helix code. Two helical strands are generated using sin and cos functions offset by pi, with 200 points per strand over 6 turns.
Скрипт Lua для створення подвійної спіралі. Дві спіральні лінії генеруються за допомогою параметричних тригонометричних функцій, причому вони зміщені одна відносно одної на π радіан навколо осі спіралі.
OghmaNano 3D simulation window showing a green double helix structure — two interleaved helical strands winding along the z axis over six complete turns.
Дволанцюгова спіраль, відображена в тривимірному режимі OghmaNano. Дві переплетені нитки утворюють шість повних витків, демонструючи гнучкість Lua-скриптингу для створення неперіодичних геометричних фігур.

Повний код Lua для цієї структури:

clear_points()

N = 200
radius = 1.5e-6
pitch = 3e-6
turns = 6

for i = 1, N do
    t = (i / N) * turns * 2 * math.pi

    -- first helix strand
    x1 = radius * math.cos(t)
    y1 = radius * math.sin(t)
    z1 = (i / N) * turns * pitch
    add_point(x1, y1, z1)

    -- second helix strand offset by pi (opposite side)
    x2 = radius * math.cos(t + math.pi)
    y2 = radius * math.sin(t + math.pi)
    add_point(x2, y2, z1)

end

Кожна спіраль відстежується шляхом поступової зміни параметра t від 0 до 2π × кількість витків. Координати x і y слідують колу заданого радіуса, тоді як z лінійно збільшується зі збільшенням t при заданому кроці. Друга спіраль зміщена на π радіан — її розміщують на протилежній стороні осі спіралі в кожній точці, що створює характерну переплетену структуру подвійної спіралі.

8. Підсумок.

Редактор послідовних дій в OghmaNano пропонує три взаємодоповнюючі методи для періодичного розміщення об’єктів у тривимірному просторі. Базовий режим дозволяє створювати прості рівномірні масиви з використанням єдиного вектора зміщення. Режим «Кристал» підтримує будь-яку кристалічну ґратку Бравé за допомогою трьох первинних векторів a1, a2, a3, що дає змогу створювати гексагональні, кубічні або довільні неортогональні структури. Режим Lua-скриптів усуває всі геометричні обмеження, дозволяючи розміщувати точки в довільних координатах, обчислених на основі будь-якого математичного виразу, як показано на прикладі подвійної спіралі вище. В усіх трьох режимах кожна копія об’єкта успадковує ті самі оптичні та електричні властивості, що й оригінал, тому всю періодичну структуру можна змінити, редагуючи лише один об’єкт.