Acesse o site: https://geovannisz.github.io/LayoutGeneratorBINGO/
O "Gerador de Layouts de Antenas BINGO" é uma aplicação web interativa e abrangente, meticulosamente projetada para facilitar o design, simulação e análise de arranjos de antenas (tiles) para o projeto BINGO (Baryon Acoustic Oscillations from Integrated Neutral Gas Observations). A interface do usuário é intuitiva e dividida em seções funcionais, cada uma dedicada a um aspecto específico do fluxo de trabalho de design de arranjos.
A aplicação recebe o usuário com um cabeçalho limpo, contendo o título e um prático Seletor de Tema (Modo Escuro/Claro), permitindo a personalização da aparência para maior conforto visual. A estrutura principal da página organiza as ferramentas em seções bem definidas:
- Gerador de Layout, Download de Imagem & Análise PSF: Criação e visualização de arranjos, download de imagens do layout e análise da função de dispersão do ponto (PSF).
- Padrão de Feixe Simulado & Curva EE(Θ): Simulação e visualização dos padrões de radiação 2D/3D do arranjo, e visualização da curva de Energia Circunscrita (EE) em função do ângulo de integração Θ da PSF.
- Mapa Interativo: Seleção geoespacial e gerenciamento de posições de estações.
- Exportação (Estrutura OSKAR): Geração de arquivos de configuração para o software de simulação OSKAR.
Esta é a primeira e uma das mais interativas seções, combinando a criação do arranjo físico com sua análise de desempenho inicial e opções de exportação visual.
O núcleo desta seção permite a criação de diversos tipos de arranjos de antenas (tiles).
- Tipo de Layout: O usuário pode escolher entre uma vasta gama de algoritmos pré-definidos:
Grid: Arranjo retangular simples.Espiral: Tiles dispostos em braços espirais.Anéis: Tiles em anéis concêntricos.Losango: Arranjo em forma de diamante.Grade Hexagonal: Tiles em uma grade hexagonal compacta.Phyllotaxis: Padrão inspirado na natureza (como sementes de girassol).Circular Manual: Um layout circular específico e pré-definido.Aleatório: Distribuição aleatória de tiles dentro de um raio.Densidade Avançada: Permite criar layouts com densidade de tiles variando radialmente usando perfis como Gaussiana, Exponencial, Log-Normal, Weibull, Cauchy e Linear Decrescente. Inclui um "Fator de Influência da Densidade" para balancear o perfil com aleatoriedade.
- Parâmetros Dinâmicos: Ao selecionar um tipo de layout, um conjunto de controles específicos aparece, permitindo ajustar finamente propriedades como número de elementos, espaçamento, fatores de escala, offset aleatório, e outros atributos pertinentes ao algoritmo escolhido. Para o layout de "Densidade Avançada", parâmetros específicos do perfil selecionado são exibidos dinamicamente.
- Controles de Geração:
Gerar Layout: Cria o arranjo com os parâmetros atuais.Gerar Aleatório: Randomiza os parâmetros do tipo de layout selecionado e gera um novo arranjo.
- Edição Manual Universal: Todos os layouts gerados podem ser manualmente ajustados arrastando e soltando os tiles individuais diretamente na tela de visualização (canvas).
- Visualização em Canvas: O layout resultante é renderizado dinamicamente em uma área de canvas. Centros de tiles e as antenas individuais (64 por tile) são exibidos.
- Estatísticas: Número total de
TileseAntenasno arranjo atual. - Mostrar Colisões: Caixa de seleção para ativar/desativar a visualização de colisões retangulares entre tiles. Se ativa e colisões são detectadas, são indicadas no canvas e listadas.
- Estatísticas: Número total de
- Importação/Exportação de Configurações:
- Botões
ImportareExportarpermitem carregar e salvar configurações de layout. - O formato JSON é utilizado, armazenando o tipo de layout, seus parâmetros de geração e, crucialmente, as posições exatas dos tiles (
currentTileLayout). Isso garante que quaisquer modificações manuais feitas via drag-and-drop sejam preservadas e restauradas.
- Botões
Integrada à seção de geração, esta funcionalidade permite salvar uma representação visual do arranjo gerado.
- Opções de Imagem:
Tema da Imagem: Escolha entreClaro(padrão) ouDracula(escuro).Incluir Eixos: Sim/Não para incluir eixos e escala na imagem.
- Botão de Download: Ao clicar em "Baixar Imagem", a configuração atual do canvas é salva como um arquivo PNG.
Também integrada à seção de geração de layout, esta sub-seção permite analisar a qualidade do feixe principal do arranjo através da PSF.
- Cálculo de Volume e Θpico:
- Um botão "Calcular Volume da PSF" inicia os cálculos no background usando um Web Worker.
- Após o cálculo, o
Volume Totalsob a PSF e oΘ_pico(largura estimada do lóbulo principal) são exibidos.
- Métricas da PSF: Uma tabela detalha métricas chave:
- SLL (Side Lobe Level): O usuário pode inserir um ângulo
Θ_SLL. O sistema calcula o volume da PSF contido neste cone e oResultadopercentual em relação ao volume total da PSF. - EE (Encircled Energy): O usuário define uma
Porcentagem de Energia Circunscritadesejada. O sistema calcula o volume fracionário correspondente e o ânguloΘ_EEque engloba essa porcentagem.
- SLL (Side Lobe Level): O usuário pode inserir um ângulo
- Status da Análise: Uma mensagem informa o estado atual dos cálculos da PSF.
Localizada ao lado do gerador de layouts, esta seção foca na simulação e visualização detalhada do padrão de radiação do arranjo, e agora também inclui a visualização da curva de Energia Circunscrita.
- Controles de Simulação:
- Ângulo Phi (0°-90°): Slider e campo numérico para selecionar o ângulo azimutal (Phi) para o corte 2D.
- Escala Y (2D/3D): Seletores para
dB(decibéis) ouLinear. - Modo de Visualização: Botões para
Padrão 2DouPadrão 3D.
- Visualização do Padrão de Feixe: Um gráfico Plotly.js renderiza o padrão.
- Gráfico 2D: Magnitude normalizada vs. ângulo Theta para o Phi selecionado.
- Gráfico 3D: Superfície colorida do feixe em toda a esfera visível.
- Status do Padrão de Feixe: Mensagem sobre o estado dos cálculos.
- Fonte de Dados E-Field: Dados de campo elétrico do elemento individual são carregados de um gateway IPFS (Pinata), processados pelo script
python/preprocess_efield_csv.pya partir derE_table_vivaldi.csv.- Plots 2D: Arquivos CSV específicos por ângulo Phi.
- Plots 3D: Arquivo CSV completo.
- Web Workers: Cálculos intensivos do padrão de feixe são delegados a Web Workers (
beam_worker.jspara 2D,beam_worker_3d.jspara 3D).
Abaixo do gráfico do padrão de feixe, esta sub-seção visualiza a relação entre a Energia Circunscrita (EE) e o ângulo de integração Theta (Θ) da PSF.
- Geração Automática: O gráfico é gerado automaticamente assim que o cálculo do "Volume Total da PSF" (na Seção 1) é concluído. Não há botão de geração manual para este gráfico.
- Visualização: Um gráfico Plotly.js mostra a porcentagem de EE (0-100%) no eixo Y em função do ângulo de integração Θ (0-90 graus) no eixo X.
- Otimização: O cálculo dos pontos da curva é otimizado, com maior densidade de amostragem em ângulos Theta menores, onde a curva EE tende a variar mais rapidamente.
- Interatividade: O zoom é restrito ao eixo horizontal (Θ), mantendo o eixo EE fixo de 0 a 100%.
- Status da Curva EE(Θ): Mensagem sobre o estado da geração do gráfico.
- Dados Dependentes: A geração deste gráfico depende do
psfGride dototalPSFVolumecalculados pelopsf_analysis_worker.js.
Esta seção oferece uma interface geoespacial para posicionar e gerenciar as estações do arranjo.
- Tecnologia: Utiliza a biblioteca Leaflet.js.
- Visualização: Mapa inicializado e centralizado nas coordenadas do BINGO Central.
- Camadas Base: Opções para
Satélite (ESRI)eMapa (OSM). - Camadas de Sobreposição:
Nomes e Limites (ESRI)eVisualizar o Arranjo.
- Camadas Base: Opções para
- Marcadores:
- BINGO Central: Marcador fixo azul.
- Marcadores de Estação: Adicionáveis por clique ou seleção de arranjos pré-definidos (
data/posicoes_outriggers.csv). São arrastáveis, com altitude obtida via API Open-Meteo. Marcador ativo em verde, outros em vermelho.
- Informações do Mapa: Exibe coordenadas da estação ativa, distância ao BINGO, distância do cursor ao BINGO, e uma lista interativa das estações com opções de centralizar/remover.
- Visualização do Arranjo no Mapa: Quando a camada "Visualizar o Arranjo" está ativa, o layout de tiles/antenas é desenhado em escala real sobre cada marcador de estação.
A seção final permite exportar os dados configurados em formatos compatíveis com o software de simulação OSKAR.
- Campos de Texto: Quatro áreas de texto exibem os dados para:
layout_wgs84.txt: Coordenadas WGS84 das estações.position.txt: Coordenadas WGS84 fixas do BINGO Central.station/layout.txt: Coordenadas XY relativas dos centros dos tiles.station/tile/layout.txt: Coordenadas XY relativas das 64 antenas de um tile.
- Botões de Copiar: Para cada área de texto.
- Download ZIP: Agrupa os quatro arquivos de texto em um ZIP com estrutura de diretórios OSKAR e nome de arquivo opcionalmente customizável.
- Frontend: HTML5, CSS3, JavaScript (ES6+).
- Bibliotecas JavaScript: Leaflet.js, Plotly.js, JSZip, FileSaver.js, Font Awesome.
- Estrutura JavaScript Modular:
main.js: Ponto de entrada e orquestração.bingo_layouts.js: Algoritmos de geração de layouts.generator.js: UI e lógica do "Gerador de Layout".map.js: Funcionalidades do mapa interativo.export.js: Exportação de dados OSKAR.beam_pattern.js: Simulação do padrão de feixe.beam_worker.js(2D),beam_worker_3d.js(3D).
psf_analyzer.js: UI da Análise da PSF.psf_ee_theta_plot.js: UI e lógica do gráfico EE(Θ) da PSF.psf_analysis_worker.js: Web Worker para cálculos da PSF (Volume, SLL, EE, Θ_pico, e agora também dados para a curva EE(Θ)).
- Scripts de Apoio Python (
python/):bingo_layouts.py: Implementação Python dos layouts.preprocess_efield_csv.py: Processamento de dados E-field.telescope_gen.py: Geração de configurações de telescópio (desenvolvimento).
Este gerador de layouts visa fornecer uma ferramenta poderosa e flexível para pesquisadores e engenheiros envolvidos no projeto BINGO, simplificando o processo de design e análise de arranjos de antenas.