O formato de arquivo do Oghma
1. O que é JSON?
sim.json aberto no Firefox, mostrando a estrutura JSON subjacente de uma simulação do OghmaNano.
O OghmaNano armazena as informações da simulação em um arquivo JSON. JSON (JavaScript Object Notation) é um formato simples, baseado em texto, para armazenar e transmitir dados estruturados. Ele é amplamente usado em software científico porque é legível por humanos e analisável por máquinas. Você pode ver exemplos gerais de estruturas JSON em https://json.org/example.html.
Para ilustrar como o JSON funciona, abaixo está um exemplo simples. Um arquivo JSON é construído a partir de seções que começam e terminam com chaves { }. Cada seção contém tokens, ou rótulos, como "color_of_dog", "dog_age" ou "dogs_toys". Esses tokens devem sempre ser escritos entre aspas duplas e são seguidos por dois-pontos : e então pelo valor de dados associado. Valores de texto são colocados entre aspas duplas, enquanto números, como inteiros ou decimais, são escritos sem aspas. No OghmaNano, valores do tipo booleano são armazenados como as strings "true" ou "false". Para que o arquivo seja válido, todos os colchetes de abertura e fechamento devem estar alinhados corretamente. Itens dentro de uma seção são separados por vírgulas, exceto o item final, que não termina com vírgula.
??.
{
"color_of_dog": "brown",
"dog_age": 5,
"dogs_toys":
{
"rabbit": "true",
"stick": "false"
}
}
JSON simples.
O OghmaNano usa os mesmos princípios de JSON para armazenar todos os dados de simulação. Essas informações estão contidas em um arquivo chamado sim.json, que contém todos os parâmetros do dispositivo, configurações da simulação e configuração de saída. Cada simulação terá seu próprio arquivo sim.json. Embora você possa abrir esse arquivo em qualquer editor de texto, frequentemente é mais fácil usar um visualizador JSON dedicado, pois ele formatará os dados em uma estrutura em árvore fácil de ler. O Firefox tem um visualizador JSON embutido muito bom. Um exemplo de um arquivo sim.json visualizado no Firefox é mostrado abaixo em ??
Um ponto final: embora sim.json seja o arquivo-chave de configuração, ele nem sempre é armazenado sozinho. Em vez disso, o OghmaNano frequentemente o empacota dentro de um arquivo sim.oghma, que é apenas um arquivo ZIP padrão — isso é feito para economizar espaço. Se você renomear sim.oghma para sim.zip, poderá abri-lo com o Windows Explorer ou qualquer visualizador de zip e extrair sim.json. Se você colocar uma cópia de sim.json no mesmo diretório da simulação e renomear o arquivo de volta para sim.oghma,
OghmaNano irá ignorar a versão arquivada de sim.json e usará seu arquivo sim.json em texto puro. Esse recurso é extremamente útil para automação, pois você pode editar diretamente sim.json usando qualquer linguagem de programação sem precisar manipular arquivos zip.
2. O formato de arquivo do OghmaNano
O OghmaNano aplica exatamente esses princípios em seu arquivo de configuração de simulação, chamado sim.json.
Esse arquivo contém tudo o que é necessário para descrever uma estrutura de dispositivo, definir as simulações a serem executadas
e configurar os solvers. Cada diretório de simulação incluirá seu próprio sim.json.
Embora você possa abrir esse arquivo em qualquer editor de texto, muitas vezes é mais conveniente usar um visualizador JSON, como o Firefox,
que apresenta automaticamente os dados em uma visualização em árvore formatada.
No nível mais alto, sim.json está organizado em um pequeno número de seções de topo.
Essas seções então se ramificam em subseções detalhadas, como varreduras JV, execuções de EQE ou definições de camadas do dispositivo.
As principais seções de topo presentes no formato atual estão resumidas na tabela abaixo:
??.
| Seção | Finalidade |
|---|---|
sim | Metadados gerais (por exemplo, versão, modo de execução, notas) |
sims | Todas as definições de simulação (JV, Suns-Voc, EQE, PL, domínio do tempo, ray, FDTD etc.) |
epitaxy | Estrutura do dispositivo: camadas, contatos, geometria, materiais |
math | Configurações e tolerâncias do solver numérico |
optical | Modelos ópticos, fontes, detectores, malhas |
dump | Controles de saída: verbosidade, sondas, formatos de arquivo |
server | Execução/paralelização (threads, GPU, limites de tempo) |
sim.json.
3. Peculiaridades do formato json do OghmaNano
-
O arquivo json do OghmaNano não suporta listas json padrão, por exemplo ["Red", "Green", "Blue"]. Se houver uma lista de itens, ela é definida primeiro declarando a variável segments, com o número de itens na lista, então, por exemplo, "segments",0 . Cada item da lista é então armazenado em "segment0", "segment1" etc... Esse formato permite ao OghmaNano alocar a memória para ler as estruturas antes de fazer a leitura. Isso pode ser visto na figura 14.1, onde há uma lista com 1 segmento.
-
Muitos itens no arquivo json receberão um número de ID, que é um código hexadecimal de 16 dígitos; isso pode ser usado para referenciar unicamente o item. Um número de ID também pode ser visto na figura 14.1. Esses números de ID são gerados aleatoriamente, mas todo número de ID deve ser único. Números de ID permitem que objetos, por exemplo camadas de epitaxia, sejam identificados de maneira única mesmo se tiverem o mesmo nome.
4. Codificação
Os arquivos .json lidos/escritos pelo OghmaNano são sempre armazenados em formato UTF-8. OghmaNano não consegue lidar com UTF-16 nem com quaisquer outros padrões de codificação de texto. Atualmente, o bloco de notas do Windows e a maioria dos outros aplicativos usam UTF-8 por padrão, então, se você não sabe o que são esses formatos de armazenamento de texto, provavelmente isso não importa. Isso só irá aparecer se você começar a gerar programaticamente arquivos .oghma em uma linguagem como C++ e estiver usando um idioma como chinês ou russo, com caracteres não latinos em seu alfabeto.
5. Compatibilidade futura/anterior do formato de arquivo
É feito um esforço significativo para garantir que novas versões do OghmaNano possam ler arquivos gerados em versões mais antigas. No entanto, versões antigas do OghmaNano podem não conseguir ler arquivos gerados em versões mais novas. Sempre que o usuário abre um arquivo sim.oghma usando a GUI, o formato do arquivo é verificado e, se ele diferir daquele usado na versão atual, o arquivo é atualizado e gravado novamente em disco. Se você estiver usando o OghmaNano em uma configuração headless chamando \(oghma\_core.exe\) diretamente, então, ao usar arquivos sim.oghma de versões antigas do modelo, antes de executar \(oghma\_core.exe\), certifique-se de tê-lo aberto primeiro na GUI para garantir que o arquivo esteja no formato correto.
6. Dicas
Se você não tiver certeza de onde um determinado parâmetro está armazenado no arquivo sim.json do OghmaNano,
um método muito eficaz é comparar duas versões do arquivo e ver o que mudou.
Uma forma de fazer isso é usar uma ferramenta de comparação de arquivos, como KDiff3.
O processo é simples:
- Abra sua simulação na interface de usuário do OghmaNano.
- Ajuste o parâmetro de interesse (por exemplo, altere a espessura da camada ativa ou uma configuração de tensão) e salve a simulação.
- Compare o novo arquivo
sim.jsoncom a versão anterior usando KDiff3 (ou outra ferramenta de diff). - Procure pelas linhas que diferem: elas mostrarão exatamente onde, na estrutura JSON, esse parâmetro está armazenado.
Essa técnica é uma maneira rápida e confiável de localizar parâmetros no JSON se você não tiver certeza do caminho deles no arquivo. Ela é especialmente útil para simulações complexas com muitas seções aninhadas.
👉 Próximo passo: Agora continue para explorar a ferramenta Parameter Scan, onde você poderá aprender como variar sistematicamente parâmetros de simulação e analisar os resultados.