Início Exemplos Capturas de ecrã Manual do utilizador Logótipo Bluesky YouTube ☰
OghmaNano Platforma symulacji wielofizycznych dla urządzeń optoelektronicznych i systemów fotonicznych DESCARREGAR Quick Start guide

O Editor de Sequências: posicionamento periódico de objetos no OghmaNano.

1. Introdução

Muitas estruturas de dispositivos fotónicos e eletrónicos são, por natureza, periódicas. Uma grelha DFB (retroalimentação distribuída) requer uma disposição precisa de cristas ou ranhuras. Um cristal fotónico é construído a partir de uma rede regular de objetos dielétricos. Uma metametassuperfície plasmónica consiste em elementos ressonantes repetidos, com espaçamento inferior ao comprimento de onda. A construção destas estruturas objeto a objeto seria impraticável, pelo que a OghmaNano oferece um editor de etapas que utiliza um único objeto e gera automaticamente cópias deste em posições especificadas no espaço tridimensional.

Uma característica importante deste sistema é que cada cópia partilha os mesmos parâmetros óticos e elétricos do original. As cópias não são objetos independentes, mas sim um conjunto de réplicas exatas, todas herdando as características do material, as propriedades das camadas e as constantes óticas do objeto original. Isto facilita a modificação de toda a estrutura periódica, bastando editar apenas o original.

O editor de etapas oferece três modos de complexidade crescente: um modo básico para matrizes uniformes simples, um modo de cristal para estruturas definidas por vetores de rede primitivos e um modo de script Lua para distribuições de pontos totalmente arbitrárias.

2. Aceder ao editor de passos

Para aceder ao editor de passos, comece pela janela principal de simulação do OghmaNano (??). Clique com o botão direito do rato no objeto que pretende replicar e selecione «Editar objeto» no menu de contexto. Isto abre o editor de objetos, conforme mostrado em ??.

No editor de objetos, localize a linha «Passos». Esta linha exibe os parâmetros do passo atual — o deslocamento (dx, dy, dz) entre as cópias e o número de cópias (nx, ny, nz) em cada direção. Clique no botão «Editar» (representado por «…») no extremo direito da linha «Passos» para abrir a janela do editor de passos.

OghmaNano main simulation window showing a periodic array of objects with a right-click context menu open, highlighting the Edit object option
Clique com o botão direito do rato no objeto desejado na janela principal da simulação e selecione «Editar objeto» para abrir o editor de objetos.
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
O editor de objetos. A linha «Passos» mostra a configuração do passo atual. Clique no botão «Editar» (representado por «…») para abrir o editor de passos.

3. Modo básico de sequenciamento.

O editor de etapas abre, por padrão, no modo de etapa básica, conforme mostrado em ??. Este modo é a forma mais simples de criar uma matriz de objetos 1D, 2D ou 3D. Ele utiliza um único vetor de etapa (dx, dy, dz) e replica o objeto o número de vezes correspondente ao valor de cada eixo. Os campos são:

Por exemplo, para criar uma grade unidimensional com 10 elementos espaçados a 209 nm ao longo do eixo z, defina dz = 209 nm, nz = 10 e mantenha dx e dy em zero. Esta é a configuração mostrada em ??, que corresponde a um período simples de grade 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.
O modo básico de passo. Um único vetor de passo (dx, dy, dz) e o número de objetos (nx, ny, nz) definem uma matriz uniforme 1D, 2D ou 3D. Aqui, é configurada uma matriz 1D de 10 objetos, espaçados a 209 nm ao longo do eixo 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.
O modo cristalino. Três vetores de rede primitivos, a1, a2 e a3, definem a célula unitária, e o objeto é replicado ao longo da rede de Bravais resultante.
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.
O modo de script Lua. Os pontos são colocados em coordenadas arbitrárias (x, y, z) usando add_point(). Clique em «Atualizar» para atualizar a visualização 3D.

4. Modo de rede cristalina

Para estruturas com periodicidade não ortogonal ou não uniforme, clique no botão «Crystal» na barra de ferramentas do editor de etapas para alternar para o modo cristal (??). Este modo define o arranjo periódico utilizando três vetores de rede primitiva, a1, a2 e a3 — o mesmo formalismo utilizado em cristalografia para descrever uma rede de Bravais.

A posição de cada objeto é calculada da seguinte forma:

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

onde i, j e k são índices inteiros que variam de 0 a nx−1, ny−1 e nz−1, respetivamente, e r₀ é a origem. Ao escolher adequadamente a1, a2 e a3, pode-se construir qualquer retículo de Bravais — cúbico simples, cúbico centrado nas faces, cúbico centrado no corpo, hexagonal ou qualquer disposição não ortogonal personalizada.

5. Modo de script Lua

Para distribuições de pontos totalmente arbitrárias — espirais, hélices, quasicristais ou qualquer geometria que não possa ser expressa como uma simples rede cristalina —, o editor de etapas oferece uma interface de script Lua, acessível ao clicar no botão de script Lua (??).

Neste contexto, estão disponíveis duas funções integradas:

Qualquer código Lua válido pode ser utilizado entre estas chamadas, incluindo ciclos, instruções condicionais, funções trigonométricas e geração de números aleatórios através de math.random(). Após editar o script, clique em «Atualizar» para regenerar a distribuição de pontos e atualizar a vista 3D.

Um exemplo simples — a colocação de objetos em posições igualmente espaçadas ao longo do eixo z, com uma pequena irregularidade aleatória aplicada a cada posição — é apresentado abaixo. Isto é útil para modelar a desordem no processo de fabricação de estruturas de difração:

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. Exemplo: retículo hexagonal.

Um exemplo prático do modo cristal é a construção de uma rede hexagonal, que pode ser utilizada para criar um cristal fotónico ou uma matriz de nanopilares dispostos em forma hexagonal. A configuração do editor de rede é mostrada em ?? e a estrutura tridimensional resultante em ??.

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.
Editor Crystal configurado para uma rede hexagonal com parâmetro de rede de 3 µm. a1 = (3 µm, 0, 0), a2 = (1,5 µm, 2,59 µm, 0), a3 = (0, 0, 3 µm).
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.
A estrutura hexagonal resultante na visualização 3D do OghmaNano. O deslocamento de 60° entre as linhas é claramente visível, o que está de acordo com o vetor a2, que forma um ângulo de 60° com o vetor a1.

Os valores principais são a2_x = a/2 = 1,5 µm e a2_y = a√3/2 = 2,598 µm, que, em conjunto, definem o ângulo de 60° entre a1 e a2, característico da simetria hexagonal. O vetor a3, perpendicular ao plano, corresponde simplesmente à distância de repetição entre as camadas ao longo do eixo z.

7. Exemplo: criação de uma dupla hélice utilizando a linguagem de programação Lua.

Um exemplo mais complexo, do ponto de vista visual, do que o modo de script Lua pode gerar é uma dupla hélice — duas fitas helicoidais entrelaçadas que se enrolam em torno de um eixo comum. Esta geometria não pode ser expressa como uma rede de Bravais e requer a utilização da interface de script. O código Lua é apresentado em ?? e a estrutura resultante em ??.

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.
O script Lua para a dupla hélice. Duas fitas são geradas utilizando funções trigonométricas paramétricas, deslocadas uma em relação à outra por π radianos em torno do eixo da hélice.
OghmaNano 3D simulation window showing a green double helix structure — two interleaved helical strands winding along the z axis over six complete turns.
A dupla hélice representada na visualização 3D do OghmaNano. Duas cadeias entrelaçadas enrolam-se em seis voltas completas, demonstrando a flexibilidade do modo de script Lua para gerar geometrias não periódicas.

O código Lua completo para esta estrutura é:

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

Cada filamento é desenhado percorrendo o parâmetro t de 0 a 2π × número de voltas. As coordenadas x e y seguem um círculo do raio especificado, enquanto z aumenta linearmente com t, de acordo com o passo definido. O segundo filamento é deslocado em π radianos — o que o coloca no lado oposto do eixo da hélice em cada ponto —, produzindo a geometria característica de dupla hélice entrelaçada.

8. Resumo

O editor de etapas do OghmaNano oferece três métodos complementares para posicionar objetos periodicamente no espaço 3D. O modo de etapa básico lida com matrizes uniformes simples, utilizando um único vetor de deslocamento. O modo de cristal suporta qualquer rede de Bravais através de três vetores primitivos (a1, a2, a3), permitindo arranjos hexagonais, cúbicos ou personalizados não ortogonais. O modo de script Lua remove todas as restrições geométricas, permitindo que os pontos sejam posicionados em coordenadas arbitrárias calculadas a partir de qualquer expressão matemática, como ilustrado pelo exemplo da dupla hélice acima. Em todos os três modos, cada cópia do objeto herda as mesmas propriedades óticas e elétricas do objeto original, de modo que toda a estrutura periódica pode ser modificada editando um único objeto.