EN3224 Dinâmica de Fluidos Computacional
Universidade Federal do ABC
Aula 6 Geração de Grades
EN3224 Dinâmica de Fluidos Computacional
EN3224 Dinâmica de Fluidos Computacional
TRANSFORMAÇÕES DE COORDENADAS
EN3224 Dinâmica de Fluidos Computacional
Grade de pontos discretos
• A abordagem de diferenças finitas apresentada até agora, que exige que os cálculos sejam feitos sobre um arranjo de pontos de grade discretos.
• A disposição destes pontos discretos ao longo do campo de fluxo é simplesmente chamado de uma grade.
• A determinação de uma grade adequada para o fluxo sobre ou através de uma dada forma geométrica é um problema complexo.
EN3224 Dinâmica de Fluidos Computacional
Geração da grade
• A questão da geração de grade é uma consideração importante em CFD: o tipo de grade escolhida para um dado problema pode ajudar ou prejudicar a solução numérica.
• A geração de grade torna-se uma atividade por si só.
• É assunto de numerosas conferências especiais, bem como vários livros.
EN3224 Dinâmica de Fluidos Computacional
Conversão de grades
• A abordagem de diferenças finitas exige uma grade uniforme.
• Não temos uma forma direta para resolver numericamente as equações de fluxo que regulam mais de uma grade não uniforme dentro do contexto de um método diferenças finitas.
• Em vez disso, a grade não uniforme deve (de alguma forma) ser convertida em uma grade uniforme, retangular.
• As equações diferenciais parciais devem ser reformuladas de modo a aplicarem-se nesta grade retangular transformada.
EN3224 Dinâmica de Fluidos Computacional
Problema...
• Alguns problemas reais não permitem que sejam aplicadas as equações de diferenças finitas diretamente.
EN3224 Dinâmica de Fluidos Computacional
Exemplo
• Deseja-se calcular o fluxo sobre um aerofólio.
EN3224 Dinâmica de Fluidos Computacional
Questões
1. Alguns pontos da grade caem dentro do aerofólio, onde eles estão completamente fora do fluxo.
• Quais são os valores das propriedades de fluxo que atribuiremos a estes pontos?
2. Existem poucos, se algum, os pontos da grade que caem sobre a superfície do perfil aerodinâmico. Isto não é bom, porque a superfície do perfil aerodinâmico é uma condição de contorno vital para a determinação da forma e, consequentemente, a superfície do perfil aerodinâmico deve ser clara e claramente vista pela solução numérica.
EN3224 Dinâmica de Fluidos Computacional
A grid adequada
• Aqui vemos uma grade não uniforme curvilínea que é literalmente desenhada em torno do aerofólio.
• Os pontos a, b, e c, no plano físico correspondem aos pontos a, b, e c no plano computacional.
Plano físico
Plano computacional
EN3224 Dinâmica de Fluidos Computacional
Transformação de coordenadas
• A transformação deve ser definida de tal forma que exista uma correspondência um-para-um entre a grade retangular e a grade física.
• As equações de diferenciais finitas são resolvidas por um método de diferença finita realizado no espaço computacional.
• O resultado é diretamente levado de volta ao plano físico, através da correspondência de um-para-um dos pontos da grade.
• As equações governantes são resolvidas no espaço computacional, que deve ser expresso em termos das variáveis x variáveis e h, em vez de x e y.
• As equações que governam o fluxo devem ser transformadas a partir de (x, y) para (x, h) como as novas variáveis independentes.
EN3224 Dinâmica de Fluidos Computacional
Ações relativas a grades
1. Obter as transformações das coordenadas e das equações.
2. Gerar a grade.
EN3224 Dinâmica de Fluidos Computacional
Transformação das variáveis
• Por simplicidade vamos começar com um fluxo fora do regime, com variáveis independentes x, y e t.
• As variáveis independentes do espaço físico (x,y,t) serão transformadas em (x,h,t), onde
)(
),,(
),,(
t
tyx
tyx
tt
hh
xx
A “Transformação”
EN3224 Dinâmica de Fluidos Computacional
...e as derivadas?
• Usando a regra da cadeia:
• Os subscritos são adicionados para enfatizar que as variáveis são mantidas constantes na diferenciação parcial.
• Em nossas expressões posteriores, os subscritos serão descartados, no entanto, é sempre útil mantê-los em mente.
tytytyty xxxx ,,,,,,,
t
t
h
h
x
x hxtxth
EN3224 Dinâmica de Fluidos Computacional
d/dx e d/dy
• Assim, para o espaço temos
xxx
h
h
x
x
yyy
h
h
x
x
EN3224 Dinâmica de Fluidos Computacional
d/dt
• E para o tempo
ou
yxyxyxyx tttt ,,,,,,,
t
t
h
h
x
x hxtxth
tttt
t
t
h
h
x
x
EN3224 Dinâmica de Fluidos Computacional
A métrica da transformação
• Os termos correspondem à métrica da transformação.
yxyx
hhxxe,,
EN3224 Dinâmica de Fluidos Computacional
A segunda derivada
Seja
A segunda derivada em x vale:
txxA
h
h
x
x
txxx
A
x
h
h
x
x2
2
h
hh
hx
xx
x xxxxxx
2
2
22
2
2
EN3224 Dinâmica de Fluidos Computacional
A segunda derivada
Chamando e lembrando que
De modo similar
xx xxB
2
xxx
h
h
x
x
xxB
h
xh
x
x
2
2
2
xxxxC
h
h
x
hxhh 2
222
EN3224 Dinâmica de Fluidos Computacional
A segunda derivada
• Substituindo na equação original e rearranjando os termos, teremos
xxx
xxxx
xh
xh
h
h
x
x
h
h
x
x
22
2
2
2
2
2
2
2
2
2
2
2
2
EN3224 Dinâmica de Fluidos Computacional
A segunda derivada
• Seguindo o mesmo processo para y, teremos
yyy
yyyy
xh
xh
h
h
x
x
h
h
x
x
22
2
2
2
2
2
2
2
2
2
2
2
2
EN3224 Dinâmica de Fluidos Computacional
A segunda derivada
• E para a segunda derivada mista,
yxyxyx
yxyxyxyx
hxxh
hx
hh
h
xx
x
h
h
x
x
2
2
2
2
2222
2
EN3224 Dinâmica de Fluidos Computacional
Exemplo 1
• Obter a equação de Laplace em (x,y,t) transformada para o espaço (x,h,t),
Equação de Laplace:
02
2
2
2
yx
EN3224 Dinâmica de Fluidos Computacional
Exemplo 1: resolução
xxxxxxx
xh
xh
h
h
x
x
h
h
x
x
22
2
22
2
2
2
2
2
2
2
2
2
yyyyyyy
xh
xh
h
h
x
x
h
h
x
x
22
2
22
2
2
2
2
2
2
2
2
2
Somando, igualando a zero, rearranjando e agrupando, chega-se a
0
2
2
2
2
2
2
2
2
2
222
2
222
2
2
yxyx
yyxxyxyx
hh
h
xx
x
xhxh
hx
hh
h
xx
x
02
2
2
2
yx
EN3224 Dinâmica de Fluidos Computacional
A transformação inversa
• Também se faz necessária a transformação do espaço computacional para o espaço físico.
• As variáveis independentes do espaço computacional (x,h,t) serão transformadas em (x,y,t):
)(
),,(
),,(
t
thx
thx
tt
yy
xx
EN3224 Dinâmica de Fluidos Computacional
A transformação inversa
• Consideremos a componente u da velocidade. Sua derivada no espaço físico vale:
• Levando para o espaço computacional, teremos
dyy
udx
x
udu
hhh
xxx
d
y
dy
u
d
x
dx
uu
d
y
dy
u
d
x
dx
uu
EN3224 Dinâmica de Fluidos Computacional
A transformação inversa
• Considerando um sistema linear,
• usando o método de Cramer, podemos escrever
hhh
xxx
d
y
dy
u
d
x
dx
uu
d
y
dy
u
d
x
dx
uu
hh
xx
hh
xx
d
yxd
yx
d
yud
yu
x
u
EN3224 Dinâmica de Fluidos Computacional
O jacobiano
O denominador da última expressão é o jacobiano determinante, denotado por
hh
xx
hx
d
yxd
yx
yxJ
),(
),(
O Jacobiano é a matriz de todos as derivadas parciais de primeira ordem de um vetor ou de função com valor escalar com respeito a outro vector.
EN3224 Dinâmica de Fluidos Computacional
A transformação inversa
Com esta nova notação, teremos
e
Estas fórmulas expressam as derivadas das variáveis do fluxo no espaço físico em termos das derivadas das variáveis do fluxo no espaço computacional.
xhhx
yuyu
Jx
u 1
hxxh
xuxu
Jy
u 1
EN3224 Dinâmica de Fluidos Computacional
Generalizando
• As transformações inversas genéricas ficam
xhhx
yy
Jx
1
hxxh
xx
Jy
1
EN3224 Dinâmica de Fluidos Computacional
Relações envolvendo jacobianos
J
d
yxd
yx
d
y
d
y
xx
hh
xx
hx
hx
xx
hhhh
xx
x
d
y
x
d
y
J
dyx
dyx 1
x
h
h
x
x
h
h
x
d
x
Jdy
d
x
Jy
d
y
Jdx
d
y
Jx
1
1
1
1
EN3224 Dinâmica de Fluidos Computacional
VERSÃO TRANSFORMADA DAS EQUAÇÕES DE CFD
EN3224 Dinâmica de Fluidos Computacional
Forma robusta das equações
Pergunta: dada uma equação do tipo
Podemos obter
?
0
y
G
x
F
t
U
0111
hx
GF
t
U
EN3224 Dinâmica de Fluidos Computacional
Forma robusta das equações transformadas
Passo 1: aplicamos as equações de transformação.
0
y
G
y
G
x
F
x
F
t
U h
h
x
x
h
h
x
x
0
y
G
x
F
t
U
EN3224 Dinâmica de Fluidos Computacional
Forma robusta das equações transformadas
Passo 2: multiplicamos pelo jacobiano.
0
y
GJ
y
GJ
x
FJ
x
FJ
t
UJ
h
h
x
x
h
h
x
x
0
y
G
y
G
x
F
x
F
t
U h
h
x
x
h
h
x
x
EN3224 Dinâmica de Fluidos Computacional
Forma robusta das equações transformadas
Calculamos o operador
xJF
F
xJ
xJF x
xx
x
x
x )/(
xJF
xJF
x
FJ
x
xx
xx
x
)/(
EN3224 Dinâmica de Fluidos Computacional
Forma robusta das equações transformadas
De forma similar, para h teremos
E, para G:
xJF
xJF
x
FJ
h
hh
hh
h
)/(
yJG
yJG
y
GJ
x
xx
xx
x
)/(
yJG
yJG
y
GJ
h
hh
hh
h
)/(
EN3224 Dinâmica de Fluidos Computacional
Forma robusta das equações transformadas
Substituindo e fatorando, chega-se a
0
yJ
yJG
xJ
xJF
yJG
xJF
yJG
xJF
t
UJ
h
h
x
x
h
h
x
x
hh
h
xx
x 0
0
EN3224 Dinâmica de Fluidos Computacional
Forma robusta das equações transformadas
Lembrando que
Então
e
022
xhhxxhhx
h
h
x
x
yyyy
xJ
xJ
x
h
h
x
d
y
Jdxd
y
Jx
1e
1
022
xhhxxhhx
h
h
x
x
xxxx
yJ
yJ
EN3224 Dinâmica de Fluidos Computacional
Forma robusta das equações transformadas
Finalmente, temos
onde
0111
hx
GF
t
U
yJG
xJFG
yJG
xJFF
JUU
hh
xx
1
1
1
EN3224 Dinâmica de Fluidos Computacional
GERAÇÃO ALGÉBRICA DE GRADE ELÍPTICA EM DOMÍNIOS DE BLOCOS ESTRUTURADOS
EN3224 Dinâmica de Fluidos Computacional
Introdução
• A maioria das técnicas de solução de equações diferenciais parciais busca uma aproximação com a verdadeira solução em grades.
• Estas grades têm de satisfazer certos requisitos no que diz respeito à sua geometria, bem como a sua topologia.
• O tipo de grade escolhida tem grande influência sobre a qualidade dos resultados obtidos.
EN3224 Dinâmica de Fluidos Computacional
Classificação de malhas
Malha estruturada - Caracterizada por conectividade regular. - Restringe as escolhas de elementos para quadriláteros em 2D ou em hexaedros em 3D. Malha não estruturada - Caracterizada pela conectividade irregular. - Os requisitos de armazenamento para uma malha não estruturada pode ser substancialmente maior. - Bom para geometria complexa.
EN3224 Dinâmica de Fluidos Computacional
Malha estruturada
EN3224 Dinâmica de Fluidos Computacional
Malha não estruturada
EN3224 Dinâmica de Fluidos Computacional
Métodos para geração de grade estruturada
Método algébrico - Mais fácil para a geração de malhas. - “Propagação de canto” - “Quebra” das linhas de grade. - Serve como grade inicial para a geração de grade elíptica. Método Elíptico - Produz as grades melhor possível no sentido de suavidade e rede de distribuição de ponto. - Pode ser utilizado com função de controle (Poisson) ou sem função de controle (Laplace).
EN3224 Dinâmica de Fluidos Computacional
Método algébrico: equações de geração de grade
• Sistema de equações de Laplace (membranas)
Desvantagem: não fornece qualquer controle sobre a distribuição de pontos internos.
02
02
111222
111222
hhxhxx
hhxhxx
yayaya
xaxaxa
EN3224 Dinâmica de Fluidos Computacional
Método elíptico: equações de geração de grade
• Sistema de equações de Laplace (membranas)
Desvantagem: não fornece qualquer controle sobre a distribuição de pontos internos.
02
02
111222
111222
hhxhxx
hhxhxx
yayaya
xaxaxa
EN3224 Dinâmica de Fluidos Computacional
Método elíptico: equações de geração de grade
• Sistema de equações de Poisson
Desvantagem: não fornece qualquer controle sobre a distribuição de pontos internos.
hxhhxhxx
hxhhxhxx
yPaPaPayPaPaPayayaya
xPaPaPaxPaPaPaxaxaxa
)2()2(2
)2()2(2
2
2211
2
1212
2
1122
1
2211
1
1212
1
1122111222
2
2211
2
1212
2
1122
1
2211
1
1212
1
1122111222
Sistema original de Laplace
Funções de controle
EN3224 Dinâmica de Fluidos Computacional
Método
1. Definir os pontos das bordas.
2. Criar um grid inicial (algébrico).
3. Aplicar interativamente o método de Laplace ou Poisson.
EN3224 Dinâmica de Fluidos Computacional
Método
Para Laplace:
com condições de contorno de Dirichlet a discretização fica
4
1,1,,1,1
,
jijijiji
ji
xxxxx
0x
EN3224 Dinâmica de Fluidos Computacional
Programa exemplo
//---------------------------------------------------------------------------
// executa um passo no sentido da solução
float dgrid()
{
int i,j;
float xm,ym,erro,mm;
float xx[MAXDIM][MAXDIM];
float yy[MAXDIM][MAXDIM];
mm = 0; erro = 0;
for(i=1;i<(n-1);i++)
for(j=1;j<(m-1);j++) {
xm = (xx[i-1][j] + xx[i+1][j] + xx[i][j-1] + xx[i][j+1])/4;
ym = (yy[i-1][j] + yy[i+1][j] + yy[i][j-1] + yy[i][j+1])/4;
erro += sqr(x[i][j] - xm) + sqr(y[i][j] - ym);
mm += 1.0;
x[i][j] = xm;
y[i][j] = ym;
}
erro = sqrt(erro) / mm;
return erro;
}
4
1,1,,1,1
,
jijijiji
ji
xxxxx