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

Introdução a scripts

1. Configurando seu ambiente de scripting

Scripting oferece uma forma mais poderosa de interagir com o OghmaNano. Em vez de usar a interface gráfica do usuário, você pode usar sua linguagem de programação favorita para interagir com o OghmaNano. Isso lhe dá a opção de conduzir simulações de forma muito mais poderosa do que pode ser feito usando apenas a interface gráfica. Abaixo eu dou exemplos de uso de MATLAB e python para conduzir o OghmaNano, mas você pode usar qualquer linguagem que quiser que tenha um leitor/gravador de json. Pearl e Java são duas linguagens que me vêm à mente.

Antes de começar a fazer scripts para o OghmaNano, você precisa dizer ao windows onde o OghmaNano está instalado; por padrão, o OghmaNano será instalado em C:\Program files x86 \OghmaNano. Nesse diretório você verá dois executáveis do windows: um chamado oghma.exe, que é a interface gráfica do usuário, e um segundo .exe chamado oghma_core.exe. Você pode executar oghma_core.exe a partir da linha de comando sem o oghma.exe. Você simplesmente precisa navegar até um diretório que contenha uma pasta sim.oghma e chamar oghma_core.exe; isso pode ser feito a partir da linha de comando do windows, matlab, python ou qualquer outra linguagem de scripting. No entanto, antes de poder fazer isso no windows, você precisa adicionar C:\Program files x86 \OghmaNano ao seu path do windows para que o windows saiba onde o OghmaNano está instalado. Um exemplo de como fazer isso em uma versão moderna do windows é dado no link https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee537574(v=office.14)

Cada nova versão do windows parece mover as opções de configuração de lugar, então você pode ter que encontrar instruções para a sua versão do windows.

2. Mais dicas sobre scripting

OghmaNano JSON Explorer showing the simulation data structure as a tree of JSON objects
O Explorador JSON, que mostra a estrutura de dados de sim.json como uma árvore navegável.

Pense na GUI como um visualizador estruturado de JSON

Um modelo mental útil ao fazer scripts para o OghmaNano é tratar toda a GUI como um visualizador e editor estruturado para o arquivo sim.json subjacente. Cada widget, slider, tabela e caixa de diálogo, no fim das contas, lê e escreve nesse arquivo. Não existe um “estado da GUI” separado - o JSON é o estado. Na faixa Automation, o JSON Explorer (Figura ??) permite navegar diretamente pelo arquivo sim.json como uma árvore hierárquica. Esta costuma ser a maneira mais rápida de entender onde um parâmetro “vive” no JSON e de confirmar que uma ação da GUI está gravando no campo que você espera.

Inspecionando objetos por copiar e colar

Outra técnica útil é aproveitar como copiar e colar funciona em toda a GUI. Quando você copia um objeto - por exemplo, clicando com o botão direito e copiando uma camada no editor de camadas, ou copiando um objeto selecionado na visualização 3D - o OghmaNano pode colocar a estrutura JSON subjacente responsável por gerar esse objeto diretamente na área de transferência.

Se você colar esse conteúdo da área de transferência em um editor de texto simples (Notepad, Notepad++, VS Code, etc.), poderá inspecionar o bloco JSON exato usado para definir aquele objeto ou entrada de tabela. Isso fornece uma visão direta e inequívoca de como o objeto é representado internamente e muitas vezes é a rota mais rápida para identificar as chaves relevantes para scripting.

Muitos menus de contexto também expõem opções como Copy JSON, Copy JSON path ou Copy scripted path. Esses comandos revelam a localização exata de um objeto dentro da hierarquia JSON, tornando muito mais fácil localizar e modificar a entrada correspondente em scripts.

Se você realmente estiver travado: use uma ferramenta de diff

Se você alguma vez não tiver certeza de como um determinado controle da GUI é mapeado para o arquivo sim.json, uma técnica simples e eficaz de depuração é usar uma ferramenta de comparação de arquivos (diff).

  1. Faça uma cópia de backup do seu arquivo de simulação, por exemplo sim.jsonsim.back.
  2. Altere um único parâmetro na GUI.
  3. Compare o arquivo sim.json modificado com o backup usando uma ferramenta diff como KDiff3.
  4. A saída do diff mostrará exatamente qual linha (ou bloco) no JSON foi alterada, revelando como aquele controle da GUI é representado internamente.

Esta costuma ser a forma mais rápida de mapear um controle da UI para um campo JSON específico, especialmente em árvores grandes de parâmetros.

Usando IDs de objeto para localizar entradas em sim.json

OghmaNano object editor showing the object ID displayed at the bottom of the window
O editor de objeto, mostrando o ID único do objeto exibido na parte inferior da janela. Esta caixa de diálogo foi aberta clicando com o botão direito no contato superior do dispositivo e selecionando Object header.

A maioria dos objetos estruturados no OghmaNano - como camadas, formas, varreduras de parâmetros e outras entidades hierárquicas - recebe um identificador único (ID), normalmente uma string hexadecimal aleatória de aproximadamente 16 caracteres.

O ID do objeto frequentemente é exposto diretamente na GUI. Por exemplo, em Figura ??, o ID é mostrado no canto inferior esquerdo da janela do editor de objeto. Esse mesmo identificador também aparece na entrada correspondente dentro do arquivo sim.json.

Esses IDs são extremamente úteis ao navegar por estruturas JSON grandes ou profundamente aninhadas. Ao procurar a string de ID em sim.json, você pode localizar imediatamente o objeto exato associado a um determinado elemento da GUI, mesmo quando a hierarquia ao redor é complexa.