Commit ee6c5c8e authored by Bruno Thomazi Zanette's avatar Bruno Thomazi Zanette 🎱
Browse files

Update README.md

parent f0b7b605
# Visualização de Simulações CORSIKA com Blender e Python
O programa [CORSIKA](https://www.iap.kit.edu/corsika/) (COsmic Ray SImulations for KAscade) gera arquivos com dados de simulação do fenômeno de chuveiro atmosférico que podem ser de difícil interpretação sem uma forma de visualizaçãp. Para midigar essa dificuldade foi criado um programa em pyhton que, junto do software aberto e livre [Blender](https://www.blender.org/), anima a tragetória das partículas, assim facilitando o entendimento do fenômeno.
O programa [CORSIKA](https://www.iap.kit.edu/corsika/) (COsmic Ray SImulations for KAscade) gera arquivos com dados de simulação do fenômeno de chuveiro atmosférico que podem ser de difícil interpretação sem uma forma de visualização. Para mitigar essa dificuldade foi criado um programa em pyhton que, junto do software aberto e livre [Blender](https://www.blender.org/), anima a tragetória das partículas, assim facilitando o entendimento do fenômeno.
![](figures/3showers.webm)
## Codigo
O programa principal é o `blender_visu_script.py`, ele é rodado em background e transforma dados do corsika em curvas no blender, a animação das curvas são salvas em formato png utilizando o comando:
### blender_visu_script.py
O programa principal é rodado em background e transforma dados do corsika em curvas no blender, o argumento que deve ser modificado quando mudar o nome dos arquivos dados é:
```python
arquivos_nome = ["EDrezultate1","EDrezultate2","EDrezultate3"] # nome txt com dados
```
A separação em lista facilita para que o loop principal possa trabalhar de cada arquivo de uma vez, por eles representarem cada um uma partícula, o programa dá uma cor diferente para cada arquivo.
a animação das curvas são salvas em formato png utilizando o comando:
```bash
blender -b -P blender_visu_script.py -o /img###.png -a
```
Onde `-b` informa o blender para rodar em background, `-P` roda o codigo na IDE python do Blender, `-o` informa o output para as imagens renderizadas e `-a` renderiza todos os frames disponíveis.
Onde `-b` informa o blender para rodar em background, `-P` roda o código na IDE python do Blender, `-o` informa o output para as imagens renderizadas e `-a` renderiza todos os frames disponíveis.
Para criar uma animação de 30 fps de nome output.mp4 com os .pngs renderizados, em sistemas Linux, podemos executar o seguinte comando no terminal:
```bash
cat *.png | ffmpeg -f image2pipe -r 30 -i - output.mp4 -y
```
### checa_arquivo.py
Esse programa foi criado separadamente por só precisar ser rodado uma vez em cima dos dados, ele encontra linhas incompletas nos arquivos que saem do CORSIKA originalmente e reescreve os arquivos sem essas linhas com o nome de ED[nome original].
## Output CORSIKA
As linhas de saída de um arquivo CORSIKA carregam a informação de um segmento da trajetória de uma partícula, elas **não** estão ordenadas de uma maneira que o segmento de uma linha sempre está conectado ao de uma próxima linha ou da anterior, portanto para melhor otimizar o programa, Blender prefere poucas objetos na cena, utilizasse a função `mesmalinha` que encontra quais segmentos estão conectados.
As linhas de saída de um arquivo CORSIKA carregam a informação de um segmento da trajetória de uma partícula, elas **não** estão ordenadas de uma maneira que o segmento de uma linha sempre está conectado ao de uma próxima linha ou da anterior, portanto para melhor otimizar o programa, Blender prefere poucas objetos na cena, utiliza se a função `mesmalinha` que encontra quais segmentos estão conectados.
Possuimos as seguintes informações no arquivo:
Possuímos as seguintes informações no arquivo:
* N: numero de gestão do próprio programa, sem significado físico;
* c: carga medida;
* x: posição inicial x;
* y: posição inicial y;
* z: posição inicial z;
* tini: tempo onde a partiícula se encontra inicialmente;
* tini: tempo onde a partícula se encontra inicialmente;
* xend: posição final x;
* yend: posição final y;
* zend: posição final z;
* tend: tempo onde a partiícula se encontra no final do segmento.
* tend: tempo onde a partícula se encontra no final do segmento.
```
N c x y z tini xend yend zend tend
3 0.00427002785727382 -739619.125 60039.1953125 269118.5625 7.22954646334983e-05 -740060.625 60128.8125 268802.4375 7.23151097190566e-05
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment