As chamadas grades quadtree e octree são bastante atraentes para aplicações que requerem refinamento de malha adaptável. Eles são usados, por exemplo, em Gerris e Paramesh . Alguém conhece um bom formato de arquivo para essas grades e oferece suporte a software de visualização? Veja também esta resposta no FAQ da Gerris. O único candidato em potencial que eu conheço atualmente é a classe VTK HyperOctree , mas parece não haver quase nenhuma documentação.
Como exemplo específico de uma malha, considere uma grade octree escassamente refinada, consistindo em caixas, cada uma contendo células. Minhas estratégias atuais em Visit / Paraview são:
- Escreva a grade como um arquivo VTK não estruturado. Isso é caro para conjuntos de dados maiores e não explora a 'estrutura' do quad / octree.
- Colete 'caixas' vizinhas na árvore em blocos maiores e escreva uma grade estruturada em blocos. Isso envolve bastante código extra e perde as informações de conectividade incorporadas no quad / octree.
Atualização Se atualmente não houver um formato viável para escrever e visualizar diretamente uma grade octree, eu gostaria de receber sugestões para um formato de arquivo que possa ser usado para gravar a octree como uma grade estruturada em bloco. Idealmente, este formato:
- Possui uma definição / implementação relativamente simples, idealmente de código aberto e com compatibilidade com C / Fortran.
- Pode lidar com eficiência com um grande número de blocos de grade (por exemplo, 1000 ou mais).
- Permite especificar facilmente a conectividade de blocos de grade, em particular nos limites de refinamento.
Atualmente, estou usando o Silo para essa finalidade, mas estou procurando algo que tenha uma melhor pontuação nos três pontos acima (menor, mais rápido, mais simples).
fonte
Respostas:
No meu caso, quando eu fazia o refinamento multinível, costumava escrever arquivos de grade em diferentes níveis separadamente. Normalmente, o nível 0 é uma malha grossa básica que permanece fixa. E para o nível 1 e superior, usei arquivos diferentes para diferentes patches. Digamos que se você tiver 5 correções no nível 1, minha estratégia era gravar cinco arquivos diferentes no final do meu programa, algo como Level_1_Patch_1, Level_1_Patch_2 ... o que poderia ser feito dinamicamente em C (nunca funcionou no Fortran).
Devo mencionar aqui que usei uma diferença finita, sistema de grade estruturada.
Então, uma vez que eu tinha todos os níveis e seus arquivos .PLT ou .DAT. Eu importo todos eles no TecPLOT. Por exemplo, quando eu estava escrevendo meu código de dois níveis com algumas correções no nível 1, sua malha deve ficar assim no Tecplot.
Não estou familiarizado com o manuseio de grades não estruturadas, mas as estruturadas são bem tratadas no Tecplot
fonte