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.
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:
- step dx, dy, dz — o deslocamento entre cópias sucessivas em cada direção.
- Número de objetos x, y, z — o número de cópias a serem colocadas ao longo de cada eixo.
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.
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:
clear_points()— remove todos os pontos definidos anteriormente.add_point(x, y, z)— coloca uma cópia do objeto na posição (x, y, z), em metros.
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 ??.
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 ??.
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.