Início Exemplos Capturas de ecrã Manual do utilizador Logótipo Bluesky YouTube
OghmaNano Simular células solares orgânicas/Perovskita, OFETs e OLEDs DESCARREGAR

Tutorial de FDTD: propagação de luz verde em espaço livre

1. Visão geral: o que você irá simular

Este tutorial apresenta o motor Finite-Difference Time-Domain (FDTD) do OghmaNano usando o sistema físico mais simples possível: propagação de ondas eletromagnéticas em espaço livre. Uma fonte monocromática de luz verde, com comprimento de onda de 530 nm, é lançada em um domínio computacional vazio. Não há guias de onda, nem ressonadores, nem materiais além do vácuo. O objetivo não é demonstrar um dispositivo, mas tornar a maquinaria numérica visível.

O módulo FDTD resolve diretamente as equações de rotacional de Maxwell no domínio do tempo sobre uma grade espacial discreta. A cada passo de tempo, os campos elétrico e magnético são atualizados em toda a malha. Como o algoritmo é altamente paralelo, o OghmaNano o executa usando OpenCL e utilizará automaticamente sua GPU se houver uma disponível. Este tutorial serve, portanto, tanto como uma demonstração de física quanto como uma primeira introdução ao backend FDTD acelerado por GPU.

Ao final desta página, você terá criado uma simulação, inspecionado o tamanho do mundo e a malha espacial, executado o solucionador e visualizado como a luz verde se propaga pelo espaço em três dimensões.

2. Criando a simulação Free space

Abra a janela New simulation e selecione a categoria FDTD examples, então escolha o exemplo chamado Free space. As duas janelas de seleção são mostradas abaixo.

New simulation window showing the FDTD examples category.
Abra FDTD examples na janela New simulation.
FDTD example list showing the Free space simulation.
Selecione o exemplo Free space.

Após o carregamento, a janela principal do OghmaNano aparece com uma cena tridimensional simples. O mundo computacional está inicialmente vazio, exceto por uma fonte e uma região detectora. Clique com o botão direito dentro da visualização 3D e ative Show world box. Uma caixa delimitadora vermelha aparecerá, definindo os limites do domínio FDTD.

Main OghmaNano window showing the Free space simulation. Checking the show world option.
Janela principal do OghmaNano mostrando a simulação Free space. Marcando a opção show world.
Main OghmaNano window showing the Free space simulation. Showing the world box that shows the extent of the simulation domain.
Janela principal do OghmaNano mostrando a simulação Free space. Mostrando a world box que exibe a extensão do domínio de simulação.
World size editor showing the dimensions of the FDTD simulation domain.
O editor de tamanho do mundo, acessado pelo botão Substrate xz-size.

As dimensões do mundo podem ser inspecionadas clicando no botão Substrate xz-size na barra de ferramentas à esquerda. Isso abre o editor de tamanho do mundo, onde o tamanho físico do domínio de simulação é definido em micrômetros. Para este tutorial, você não precisa alterar nada; o domínio já foi configurado para conter confortavelmente vários comprimentos de onda de luz verde.

3. Inspecionando as configurações ópticas e a malha

Em seguida, abra a faixa Optical na parte superior da janela.

Optical ribbon in OghmaNano showing the Optical mesh button.
A faixa Optical. Clique em Optical mesh para inspecionar a discretização espacial.

Clique em Optical mesh para abrir o editor de malha.

Optical mesh editor showing mesh points and wavelength range between 531 nm and 532 nm.
Configurações da malha óptica, incluindo resolução espacial e faixa de comprimento de onda (531–532 nm).

O editor de malha exibe quantos pontos de grade são usados em cada direção espacial. Eles determinam a resolução espacial do cálculo FDTD. A faixa de comprimento de onda é definida entre 531 nm e 532 nm, o que corresponde à luz verde. Neste exemplo, os parâmetros de espessura mostrados no editor de malha são automaticamente escalados para o tamanho do mundo e podem ser ignorados. O ponto importante é que a grade espacial é suficientemente fina para resolver o comprimento de onda eletromagnético.

4. Executando o solucionador FDTD acelerado por GPU

Inicie a simulação clicando no botão Run simulation ou pressionando F9. A aba Terminal exibirá informações do solucionador.

Terminal output showing the FDTD module initialising and searching for OpenCL devices.
Saída do terminal durante a execução. O módulo FDTD inicializa, informa o espaçamento da malha e o comprimento de onda e procura dispositivos OpenCL disponíveis antes de iniciar o loop de passos de tempo.
Output tab showing simulation result files including detector data and snapshots directory.
A aba Output após a conclusão. Os arquivos gerados incluem traços do detector, exportações de configuração e o diretório snapshots/ contendo dados de campo resolvidos no tempo.

Na saída do Terminal, observe o texto verde informando Searching for OpenCL devices. Nesse estágio, o programa está examinando seu sistema em busca de GPUs compatíveis. Em sistemas com placa gráfica suportada, o solucionador selecionará a GPU e executará nela o loop de passos de tempo. No exemplo mostrado, o cálculo está sendo executado em um backend de CPU emulando um dispositivo OpenCL, mas em uma workstation moderna a mesma simulação usará automaticamente o processador gráfico para aceleração.

5. Inspecionando a saída e os snapshots do campo

Após a conclusão, mude para a aba Output. Os arquivos gerados estão listados ali.

Later-time snapshot showing spherical wavefront propagation.
Um snapshot em tempo posterior mostrando a propagação para fora da frente de onda de luz verde.
Snapshot viewer showing green light propagating in free space.
Visualizador de snapshots: selecione power density e use os controles deslizantes para explorar tempo e espaço.

Dê duplo clique no diretório snapshots para abrir o visualizador de snapshots. Selecione power density na lista suspensa na parte inferior da janela. O campo colorido representa a densidade instantânea de energia eletromagnética. Use o controle deslizante horizontal para avançar e retroceder no tempo e os controles deslizantes espaciais para examinar diferentes seções transversais do domínio. Em alguns computadores, especialmente ao executar malhas grandes, o visualizador pode levar um breve momento para responder enquanto carrega cada conjunto de dados.

À medida que você avança no tempo, observará a frente de onda se expandindo pelo domínio. Em espaço livre, sem fronteiras ou estruturas, a propagação é uniforme e simétrica, limitada apenas pelas condições de contorno absorventes nas bordas da caixa computacional.

6. Visualizando a potência no detector

A grade roxa visível na janela principal representa um plano detector colocado dentro do domínio de simulação. Dê duplo clique em detector 0 na aba Output para abrir o traço de potência registrado.

Main window showing the detector plane in purple.
O plano detector (grade roxa) dentro do domínio de espaço livre.
Detector power versus time plot.
Potência no detector em função do tempo.

O gráfico resultante mostra a potência eletromagnética atravessando esse plano em função do tempo. Inicialmente, o detector registra sinal zero. À medida que a frente de onda alcança o plano, a potência medida aumenta e então se estabiliza de acordo com o perfil temporal da fonte. Essa configuração simples facilita conectar a propagação visual da onda no visualizador de snapshots com uma medição quantitativa de potência.

Agora você concluiu sua primeira simulação FDTD no OghmaNano. Embora o sistema não contivesse materiais nem dispositivos, ele demonstrou todo o pipeline numérico: definição do mundo, construção da malha, seleção do dispositivo GPU, passos no tempo, visualização de campo e extração do detector. Em tutoriais subsequentes, essas mesmas ferramentas serão aplicadas a sistemas fotônicos e optoeletrônicos estruturados.

7. Acelerando a simulação ao mudar para 2D (XZ)

Muitas vezes, simulações totalmente tridimensionais não são necessárias para compreender estruturas e dispositivos, particularmente quando a física é essencialmente invariante em uma direção. Nesses casos, você pode obter uma aceleração considerável ao reduzir o problema para duas dimensões. Para o exemplo Free space, mudar de um mundo 3D para uma simulação XZ remove toda a dimensão Y da grade computacional. O resultado é menos pontos de malha, menos dados de campo e tempos de execução dramaticamente menores — tipicamente rápidos o suficiente para que novas execuções se tornem efetivamente interativas.

Para fazer isso, volte à faixa Optical, abra Optical mesh e selecione a configuração de malha 2D mostrada em ??. A mudança-chave é que o eixo Y é suprimido, de modo que a simulação se torna um cálculo no plano XZ.

Optical mesh editor configured for a 2D XZ simulation by suppressing the Y dimension.
Malha óptica configurada para 2D: suprima o eixo Y para executar uma simulação em XZ.
Snapshot viewer in 2D showing the wave propagating in the XZ plane.
O visualizador de snapshots em 2D: a evolução do campo no plano XZ é renderizada rapidamente e é fácil de percorrer.
FDTD editor showing output verbosity to disk set to write everything to disk.
Para uma reprodução mais suave, aumente a densidade de snapshots definindo a verbosidade de saída para Write everything to disk.

Com a malha agora reduzida a duas dimensões, execute a simulação novamente. Você deverá notar imediatamente que o solucionador é concluído quase instantaneamente em comparação com o caso 3D. Abra novamente o diretório snapshots/ e percorra o tempo no visualizador de snapshots (??). Como o conjunto de dados é muito menor, o visualizador não apenas carrega mais rápido, como também responde mais rapidamente quando você arrasta o controle deslizante de tempo ou move os controles de seção transversal espacial.

Um detalhe a observar é que a suavidade percebida da animação pode mudar. Na execução 2D, a simulação avança muito rapidamente e você normalmente está gravando menos quadros, de modo que, ao percorrer o tempo, a evolução pode parecer ligeiramente truncada — simplesmente porque há menos snapshots registrados entre um índice de tempo e o seguinte. Se você quiser acompanhar a propagação da onda com maior detalhe temporal, aumente a quantidade de saída gravada em disco.

Para fazer isso, vá novamente à aba Optical, clique no botão FDTD simulation para abrir a janela de configuração de FDTD e altere Output verbosity to disk de Write everything to disk every 8th step para Write everything to disk (??). Isso grava um snapshot a cada passo de tempo. Quando você reabrir o visualizador de snapshots, poderá acompanhar a onda propagando-se no tempo com grande exatidão, com resolução temporal muito mais fina durante a reprodução e a navegação.