-
Notifications
You must be signed in to change notification settings - Fork 0
/
q2d9_library.h
62 lines (47 loc) · 2.6 KB
/
q2d9_library.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#ifndef Q2D9_LIBRARY_H
#define Q2D9_LIBRARY_H
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265
/*
* distribuição das direcoes | baseada no livro pg. 70
* |6 2 5|
* |3 0 1|
* |7 4 8|
*/
/*
Estrutura que representa as células no domínio para a configuração Q2D9.
Cada campo representa uma das caracterísiticas que estamos interessados.
*/
struct celula_t
{
double rho;
double ux;
double uy;
double f[9];//função de distribuição
}typedef Celula;
//Função usada para desalocar a memória alocada nas matrizes.
//Não retorna nada
void limpa(Celula **funcDistribuicao, int tamX, int tamY);
//Função usada para calcular a densidade na célula
//Retorna a densidade da célula no parâmetro rho
void calculaDensidade2D(Celula **funcDistribuicao, int tamX, int tamY);
//Função usada para calcular a velocidade de uma célula
//Retorna a velocidade no eixo X e no eixo Y nas variáveis ux e uy respectivamente
void calculaVelocidade2D(Celula **funcDistribuicao, int tamX, int tamY);
//Função usada para encontrar a função de equilíbrio baseada na função distribuição e nos pesos para o caso q2d9
//Retorna uma matriz da struct Celula com a função de equilíbrio para todas as direções em cada ponto da matriz dentro da struct Celula funcEquilibrio
void calculaFuncEquilibrio2D(Celula **funcDistribuicao, Celula **funcEquilibrio, double *pesos, int tamX, int tamY);
//Função usada para calcular a colisão interna das células
//Retorna a nova função distribuição depois da colisão dentro da struct Celula funcDistribuicao
void calculaColisao2D(Celula **funcDistribuicao, Celula **funcEquilibrio, double tau, int tamX, int tamY);
//Função usada para calcular a propagação das particulas dentro do domínio
//Retorna a função pós propagação dentro da matriz de struct Celula funcDistribuicao
void calculaPropagacao2D(Celula **funcDistribuicao, int tamX, int tamY);
//Calcula o processo de explosão, neste caso "explode" a última linha da matriz grosseira para a interface (primeiras linhas) da matriz refinada.
void calculaExplosao2D(Celula **funcDistribuicao_c, Celula **funcDistribuicao_f, int tamX_c, int tamY_c, int tamX_f, int tamY_f, int razaoDeDivisao);
//Calcula a densidade para todo o domínio refinado, incluindo a região de interface. Usado principalmente para depurar o código
void calculaDensidade2D_fronteira(Celula **funcDistribuicao, int tamX_f, int tamY_f, int razaoDeDivisao);
/*****************************************************************************************************************************************************/
#endif