Escolar Documentos
Profissional Documentos
Cultura Documentos
CC-297
Elementos de Mecânica dos Fluidos
Computacional
Projeto No.2
1 CONTEXTUALIZAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1 Implementação de Malhas Parabólicas . . . . . . . . . . . . . . . . . 2
2.2 Implementação de Malhas Elípticas . . . . . . . . . . . . . . . . . . . 7
2.2.1 Método AF1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2 Método SLOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.3 Método AF2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1 Caso I: Cilíndro Bidimensional . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Caso II: Aerofólio Biconvexo . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Caso III: Aerofólio NACA 0012 . . . . . . . . . . . . . . . . . . . . . 16
3.3.1 Estiramento na Parede . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.2 Estabilidade AF2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 CONCLUSÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
APÊNDICES 23
1 Contextualização
Como vimos durante o avanço do curso, utilizamos equações diferenciais parciais para
modelar o comportamento de nosso fluido. Para tal análise o domínio a ser avaliado
é então discretizado em pequenos subdomínios, que podem ter formas variadas, desde
pequenos triângulos e quadriláteros para casos bidimensionais, a tetraédros e hexágonos
para casos tridimensionais, entre outros elementos geométricos. As equações que modelam
a física do fenômeno são então discretizadas e resolvidas em cada um desses subdomínios.
Esses subdomínios podem ser chamados de elementos ou células, e o conjunto de todos as
células células computacionais é chamado de malha. A origem do termo malha remonta às
primeiras análises realizadas em CFD, quando a maioria das análises eram de natureza
bidimensional. Para análises 2D, um domínio dividido em elementos se assemelha a uma
malha de arame, daí o nome.
Nosso objetivo é gerar uma malha bidimensional, para uso em futuras análises
utilizando o método de potencial completo. Para isso devemos gerar uma malha adequada,
afinal, nossa solução é tão boa quanto nossa malha. Nesse estudo avaliaremos malhas
elípticas, inicializadas a partir de malhas parabólicas. Esta é escolhida para garantir um
certo nível de ortogonalidade em nossa malha, que depois é suavizada através do método
elíptico, como veremos nos capítulos a seguir.
A análise apresentada neste documento foi realizada através de um código escrito
para o ambiente MATLAB, porém todas as funções utilizadas foram escritas pelo autor.
2
2 Metodologia
Esse capítulo tem como objetivo realizar uma breve descrição do modelamento do problema.
Nossa abordagem parte primariamente de uma análise de geração de malhas parabólicas,
em seguida partimos para a descrição da geração de malhas elípticas. Em seguida são
apresentados os métodos iterativos utilizados.
Onde na equação 2.1, r representa tanto x quanto y, de modo que o usamos para
facilitar nossa análise. Neste caso temos que:
Equação que pode ser aplicada tanto para malhas elípticas quanto para malhas
parabólicas. Como veremos futuramente, geradores de malhas elípticas necessitam ser
inicializados por ’campo’ inicial para variáveis x e y. Portanto, abordaremos primeiramente
a malha parabólica, que será utilizada como malha inicial para o gerador elíptico. Assim,
Capítulo 2. Metodologia 3
como explicado em [1], nosso primeiro passo é discretizar as derivadas da equação 2.4
através de um esquema centrado de segunda ordem. De modo que podemos chegar a:
B
A(ri+1,j − 2ri,j + ri−1,j ) = (ri+1,j+1 − ri+1,j−1 − ri−1,j+1 + ri−1,j−1 )−
2 (2.5)
C(ri,j+1 − 2ri,j + ri,j−1 )
Temos assim uma tridiagonal em i para cada j avaliado. Das equações 2.6 e 2.7
vemos que dependemos de termos j − 1 e j + 1. Se aplicamos condições de contorno nas
fronteiras interna e externa, ou seja, condições de variável imposta ou Dirichlet, então
conhecemos o valor j − 1 para j = 2, pois j = 1 corresponde à minha fronteira interna.
Já j + 1 é desconhecido e precisa ser estimado, portanto fazemos uso de uma malha de
referência local, método proposto por [2]. A malha de referência local é gerada por um
esquema hiperbólico algébrico, que necessita inicialmente da especificação da inversa do
Jacobiano J −1 e da métrica de ortogonalidade B, dados respectivamente por:
J −1 = xξ yη − xη yξ B = xξ xη + yη yξ (2.8)
De modo que as derivadas em η para a malha re referência local são dadas por:
−yξ Sη xξ S η
xη = q yη = q (2.9)
x2ξ + yξ2 x2ξ + yξ2
Sη = ∆sR (2.10)
Capítulo 2. Metodologia 4
(q − 1)
s1 = (2.11)
(q Nj − 1)
sj − sj−1
∆s = (2.13)
sN j − sj−1
q
R= (xi,N j − xi,j−1 )2 + (yi,N j − yi,j−1 ) (2.14)
1
rξ = (ri+1,j−1 − ri−1,j−1 ) (2.15)
2
De modo que a derivada em ξ depende da malha em j − 1, ou seja, a malha
parabólica da linha anterior. Assim, através das equações 2.9 a 2.15, podemos determinar
a parcela ortogonal de nossa malha de referência local, dada por:
◦
ri,j = ri,j−1 + rη (2.16)
Lembrando, mais uma vez, que r representa tanto x quanto y. Podemos também
determinar nossa malha interpolada dada por:
i
ri,j = ri,j−1 + ∆s(ri,N j − ri,j−1 ) (2.17)
i ◦
ri,j = εri,j + (1 − ε)ri,j (2.18)
Capítulo 2. Metodologia 5
Sendo ε uma função que alterna entre a fronteira interna e externa de modo a
garantir a malha ortogonal ao aerofólio, podendo ser escrita da forma:
j−1
ε= (2.19)
Nj − 1
1
rξ = (ri+1,j+1 − ri−1,j+1 ) (2.20)
2
Já as derivadas em η, como descrito por [1], podem ser calculadas da seguinte
forma, também utilizando a malha de referência local:
Neste caso, a malha tridiagonal se trata de uma tridiagonal periódica, já que nosso
elemento r1,j corresponde ao mesmo elemento rN i,j , de modo que o algorítmo de Thomas
[4], descrito a seguir, não pode ser utilizado para a marcha em η.
Escrevemos portanto:
Onde os vetores que formam a matriz de periodicidade podem ser escritos como:
uT = [−b1 0 ... 0 cn ]
−a1 (2.24)
v T = [1 0 ... 0 ]
b1
De modo que:
A0 = A − uv T (2.25)
A0 y = d
(2.26)
A0 q = u
vT y
x=y− ·q (2.27)
1 + vT q
A partir do algorítmo de Sherman-Morrison então determinamos então r1:N i,j , ou
seja, determinamos nossa linha η = constante, que corresponde à nossa malha parabólica,
e seguimos marchando em η até chegarmos à linha j = N j − 1 anterior à fronteira externa.
n n
N · ∆ri,j + ωLri,j =0 (2.29)
O operador correção para o método ADI pode ser escrito da seguinte forma:
1
N ( )i,j = − α − Ani,j δξξ α − Ci,j
n
δηη ( )i,j (2.30)
α
Onde α representa aqui o parâmetro de aceleração de convergência. Podemos aplicar
a equação 2.30 na equação 2.29 para obter a equação de solução de nossa malha. Desse
modo chegamos a:
1
− n
α − Ani,j δξξ α − Ci,j n
δηη ∆ri,j n
+ ωLri,j =0 (2.31)
α
Como comentado, o método ADI é um método de fatoração aproximada. Portanto
dividimos a equação 2.31 em dois estágios de cálculo. Para uma malha parabólica marcha-
mos no espaço, na direção η, portanto, selecionamos nosso estágio de modo a primeiro
resolver a direção ξ para depois resolver a direção η da forma:
α − Ani,j δξξ Ki,j
n n
= αωLri,j
(2.32)
n n n
α − Ci,j δηη ∆ri,j = Ki,j
α − Ani,j δξξ Ki,j
n n
= αωLri,j (2.33)
n
αKi,j − Ani,j Ki+1,j
n
+ 2Ani,j Ki,j
n
− Ani,j Ki−1,j
n n
= αωLri,j (2.34)
B −Ani,j , α + 2Ani,j , −Ani,j Ki−1,j
n n
= αωLri,j (2.35)
Chegamos portanto à nossa primeira matriz tridiagonal, que, neste caso, é uma
matriz periódica pois avaliamos na direção ξ. Assim, a solução é dada resolvendo o
algorítmo de Sherman-Morrison, discutido nas equações 2.23 a 2.27. Realizada a varredura
em ξ, fazemos o mesmo para η, agora utilizando a seguinte tridiagonal:
n n n n n
B −Ci,j , α + 2Ci,j , −Ci,j ∆ri,j = Ki−1,j (2.36)
acima pode ser resolvida utilizando o algorítmo de Thomas, pois neste caso não existe
periodicidade. Foram realizados alguns testes numéricos e nâo foi encontrada diferença ao
se inverter a ordem dos estágios, a solução foi encontrada para mesmo resíduo em mesmo
número de iterações gastas, também para ordem:
n n n
α − Ci,j δηη Ki,j = αωLri,j
(2.37)
α − Ani,j δξξ ∆ri,j
n n
= Ki,j
" #
δ ξξ
N ( )i,j = Eη−1 − 2/α + ( )i,j (2.38)
α
n
Portanto, escrevemos para nosso método aplicado em ∆ri,j a seguinte equação, que
representa o cálculo da correção tanto para x quanto y.
n n n
B(−1, 4, −1)∆ri,j = αωLri,j + α∆ri,j−1 (2.40)
Mais uma vez, chegamos a uma matriz tridiagonal periódica, que pode ser resolvida
através do algorítimo de Sherman-Morrison, já discutido no tratamento de nossa malha
periódica. Comparado ao passo anterior temos um método relativamente simples, e que
depende do cálculo de apenas uma matriz tridiagonal periódica. Porém, equanto o cálculo
de ∆r em i é feito considerando i − 1 e i + 1, o cálculo em j considera apenas j − 1. Porém,
há de ressaltar que apesar de o cálculo se tornar mais barato por iteração, isso não o torna
necessariamente mais robusto.
δηη = ∆η ∇η (2.41)
Capítulo 2. Metodologia 11
Assim, o operador correção para o método AF2 pode ser escrito da seguinte forma:
1 n
N ( )i,j = − α − Ci,j ∆η α∇η − Ani,j δξξ ( )i,j (2.42)
α
De forma similar ao método ADI, o método AF2 também é um método de fatoração
aproximada. Portanto dividimos a equação 2.31 em dois estágios de cálculo. Porém,
diferentemente do caso anterior, temos agora somente uma matriz tridiagonal. Assim,
podemos escrever os estágios para o método da forma:
n n n
α − Ci,j ∆η Ki,j = αωLri,j
(2.43)
α∇η − Ani,j δξξ ∆ri,j
n n
= Ki,j
n n n n n
(α + Ci,j )Ki,j − Ci,j Ki+1,j = αωLri,j (2.44)
n n
n αωLri,j + (α + Ci,j )
Ki,j = n
(2.45)
(α + Ci,j )
B −Ani,j , α + 2Ani,j , −Ani,j ∆ri,j
n n
= Ki,j n
+ α∆ri,j−1 (2.46)
Como o método AF2 utiliza somente uma matriz tridiagonal isso o torna mais
barato de se resolver que o método AF1. Porém, não necessariamente ser menos custoso
o torna mais robusto, ou até mesmo mais rápido. Isso é portanto um caso de estudo
que é interessante avaliar. Assim, cada esquema foi brevemente apresentado, e como
resolvê-los considerando nosso domínio computacional bidimensional. Também vimos que
o método iterativo necessita ser iniciado, neste caso utilizando uma malha parabólica.
Assim utilizamos o domínio computacional (ξ, η) para solucionar nosso domínio real (x, y),
de modo a obter nossa malha elíptica. Mostraremos, no capítulo que segue a obtenção das
malhas parabólicas e elípticas para diferentes geometrias bidimensionais, partindo de um
cilíndro bidimensional à aerofólios, de modo que avaliaremos os métodos aqui descritos.
12
3 Resultados
Figura 4 – Análise do resíduo de cada método iterativo para geração de malha para
cilíndro circular.
Figura 5 – Obtenção da malha parabólica (esq.) e elíptica (dir.) para cilíndro circular
bidimensional com método AF1.
Capítulo 3. Resultados 14
Figura 6 – Obtenção da malha parabólica (esq.) e elíptica (dir.) para cilíndro circular
bidimensional com método AF1.
Figura 7 – Análise do resíduo de cada método iterativo para geração de malha para
aerofólio biconvexo.
Figura 8 – Obtenção da malha parabólica (esq.) e elíptica (dir.) para aerofólio biconvexo
com método AF1.
Porém, agora ao focarmos nas regiões próximas à fronteira interna podemos ver
Capítulo 3. Resultados 16
a suavização da malha ao redor quando comparada ao caso parabólico. Podemos ver tal
suavização principalmente nas regiões próximas aos bordos de ataque e fuga do aerofólio,
onde a malha tinha elementos de mairo área anteriormente no caso parabólico
Figura 9 – Obtenção da malha parabólica (esq.) e elíptica (dir.) para aerofólio biconvexo
com método AF1.
Figura 10 – Obtenção da malha parabólica (esq.) e elíptica (dir.) para aerofólio NACA
0012 com método AF1.
Capítulo 3. Resultados 17
Figura 11 – Análise do resíduo de cada método iterativo para geração de malha para
aerofólio NACA 0012.
Figura 12 – Obtenção da malha parabólica (esq.) e elíptica (dir.) para aerofólio NACA
0012 com método AF1.
Como o NACA 0012 tem uma geometria mais suave em seu bordo de ataque,
aparentemente isso contribui para uma melhor convergência do código, porém, o aumento
do desempenho não chega a ser expressivo, como vemos a seguir. Observa-se melhor ganho
de desempenho para AF2 e SLOR, AF1 permanece praticamente atingindo erro de máquina
de forma similar ao biconvexo. O comportamento obtido para as malhas parabólicas e
Capítulo 3. Resultados 18
Figura 13 – Obtenção da malha elíptica sem estiramento (esq.) e com estiramento com
taxa de crescimento de 1, 15 (dir.) para aerofólio NACA 0012 com método
AF1.
Figura 14 – Obtenção da malha elíptica sem estiramento (esq.) e com estiramento com
taxa de crescimento de 1, 15 (dir.) para aerofólio NACA 0012 com método
AF1.
Capítulo 3. Resultados 19
Para avaliar a redistirbuição dos pontos sobre a fronteira, fazemos uso de uma
P.G. cujo somatório corresponde à meia-corda do aerofólio em análise, e espelhamos a
variação geométrica para obter uma distribuição simétrica ao longo da fronteira interna,
ou seja, do aerofólio em questão. Isso sem alterar a distribuição de pontos da fronteira
externa. Para avaliar o efeito do estiramento na fronteira interna, utilizamos o método AF1
e discretizamos a fronteira utilizando uma P.G. com taxa de crescimento 1.15, conforme
apresentado na figura 13. Quando avaliamos o domínio, percebemos, visualmente, poucas
diferenças entre ambos os casos. Apesar de apresentar uma melhor qualidade, a taxa de
convergência para o método AF1 diminui utilizando o estiramento da malha próximo
à parede, como podemos ver a seguir. Isso ocorre também ao se aumentar a taxa de
estiramento para 1, 30, a despeito da expectativa do autor.
Figura 15 – Análise do resíduo de cada método iterativo para geração de malha para
aerofólio NACA0012 com e sem estiramento da fronteira interna.
Figura 16 – Obtenção da malha elíptica sem estiramento para aerofólio NACA 0012 com
método AF2, utilizando α = 1, 3.
Figura 17 – Análise do resíduo do método AF2 para geração de malha para aerofólio
NACA0012 para diferentes fatores de aceleração.
21
4 Conclusões
O objetivo deste projeto era a construção de um código capaz de resolver gerar uma
malha bidimensional elíptica a partir de uma malha parabólica, e que o mesmo fosse
independente da geometria. Objetivo este alcançado, demonstrado pela capacidade do
código em produzir malhas para um cilíndro circular, aerofólio biconvexo e aerofólio NACA
0012 (ou família 00XX).
Entre os métodos AF1, AF2 e SLOR implementados para o código, melhor desem-
penho foi obtido para o método AF1, que se mostrou estável mesmo para um alto passo
de tempo virtual, representado pelo parâmetro de aceleração de convergência α = 0, 1.
Os métodos AF2 e SLOR apresentaram desempenho inferior, comparados a este, e se
mostraram sensíveis ao parâmetro α, diferentemente do caso anterior.
Foi possível alcançar erro de máquina para todos os métodos avaliados, e obter
malhas implícitas de boa qualidade, e suavizadas pelo método elíptico utilizado. Além
disso, foram feitos breves estudos quanto à obtenção de uma malha com estiramento na
fronteira interior, que representa a parede da geometria a ser estudade, e também quanto à
sensibilidade do método AF2 frente ao parâmetro de aceleração, ambos estudos realizados
para o aerofólio NACA 0012.
22
Referências
[1] Uller, M., Azevedo, J. L. F. Grid generation Technique Effects on Transonic Full
Potential Solutions of Airfoil Flows, In.: Anais do XI Congresso Brasileiro de Engenharia
Mecânica - XI COBEM, São Paulo, Brasil, pp. 197–200, 1991.
[3] Azevedo, J. L. F. Notas de Aula: CC-297 Elementos de Mecânica dos Fluidos Compu-
tacional - Projeto No. 2, Instituto Tecnológico da Aeronáutica, Brasil, 2018.
[4] Thomas, L.H. Elliptic Problems in Linear Differential Equations over a Network,
Watson Sci. Comput. Lab Report, Columbia University, New York, 1949.
[5] Conte, S.D., deBoor, C. Elementary Numerical Analysis, McGraw-Hill, New York, 1972
[7] Fletcher, C.A.J. Computational Techniques for Fluid Dynamics 1: Fundamentals and
General Techniques, Springer-Verlag, Heidelberg, 2nd edition, 1991.
[8] Wikipedia, the free encyclopedia. Alternating Direction Implicit Method, Acessado em
21 de Abril de 2018, <https://en.wikipedia.org/wiki/Alternating_direction_implicit_
method>
Apêndices
24
figure
for ii = 1:Nj
plot(X(ii,1:Ni),Y(ii,1:Ni),'b'); hold on; axis square
end
for ii = 1:Ni
plot(X(1:Nj,ii),Y(1:Nj,ii),'r'); hold on; axis square
end
hold off; grid on; grid minor
xlabel('x')
ylabel('y')
xlim([-10 10]); ylim([-10 10])
figure
semilogy(ERR,'Linewidth',2)
grid on; grid minor
26
[Xo,Yo] = B_NOACK(Ni,X,Nj,Y,q,graph);
%% Criação da matriz A:
AA(1:Ni,1:Ni) = 0;
% Contador:
n = 0;
for ii = 1:Ni
n = n + 1;
if ii == 1
AA(ii,Ni) = 2*(A(ii));
AA(ii,n) = 4*(A(ii) + C(ii))*(-1);
AA(ii,n+1) = 2*(A(ii));
elseif ii == Ni
AA(ii,n-1) = 2*(A(ii));
AA(ii,n) = 4*(A(ii) + C(ii))*(-1);
AA(ii,1) = 2*(A(ii));
else
AA(ii,n-1) = 2*(A(ii));
AA(ii,n) = 4*(A(ii) + C(ii))*(-1);
AA(ii,n+1) = 2*(A(ii));
end
end
%% Criação dos vetores u e v:
u(1:Ni,1) = 0;
u(1,1) = 4*(A(1) + C(1))*(-1)*(-1);
u(Ni,1) = 2*(A(Ni));
v(1:Ni,1) = 0;
v(1,1) = 1;
v(Ni,1) = (2*A(1))*(-1)/(4*(A(1) + C(1))*(-1));
%% Cálculo da matriz A':
AL = AA - u*v';
%% Identificação dos coeficientes de A':
M(1:Ni,1) = 0;
N(1:Ni,1) = 0;
O(1:Ni,1) = 0;
for ii = 1:Ni
if ii == 1
M(ii) = 0;
N(ii) = AL(ii,ii);
O(ii) = AL(ii,ii+1);
elseif ii == Ni
M(ii) = AL(ii,ii-1);
N(ii) = AL(ii,ii);
O(ii) = 0;
else
M(ii) = AL(ii,ii-1);
N(ii) = AL(ii,ii);
O(ii) = AL(ii,ii+1);
end
end
%% Cálculo do vetor resposta Y (utilizando o Alg. de E_THOMas):
[Y] = E_THOM(M,N,O,D,Ni);
%% Cálculo do vetor resposta Q (utilizando o Alg. de E_THOMas):
[Q] = E_THOM(M,N,O,u,Ni);
%% Cálculo do vetor resposta do sistema AX = R:
X = Y - ((v'*Y)/(1 + v'*Q))*Q;
X = X';
X = [X X(1)];
end
32
end
end
%% Criação dos vetores u e v:
u(1:Ni,1) = 0;
u(1,1) = N(1)*(-1);
u(Ni,1) = O(Ni);
v(1:Ni,1) = 0;
v(1,1) = 1;
v(Ni,1) = M(1)*(-1)/N(1);
%% Cálculo da matriz A':
AL = AA - u*v';
%% Identificação dos coeficientes de A':
P(1:Ni,1) = 0;
Q(1:Ni,1) = 0;
R(1:Ni,1) = 0;
for ii = 1:Ni
if ii == 1
P(ii) = 0;
Q(ii) = AL(ii,ii);
R(ii) = AL(ii,ii+1);
elseif ii == Ni
P(ii) = AL(ii,ii-1);
Q(ii) = AL(ii,ii);
R(ii) = 0;
else
P(ii) = AL(ii,ii-1);
Q(ii) = AL(ii,ii);
R(ii) = AL(ii,ii+1);
end
end
%% Cálculo do vetor resposta Y (utilizando o Alg. de E_THOMas):
[Y] = E_THOM(P,Q,R,D,Ni);
%% Cálculo do vetor resposta Q (utilizando o Alg. de E_THOMas):
[Q] = E_THOM(P,Q,R,u,Ni);
%% Cálculo do vetor resposta do sistema AX = R:
K = Y - ((v'*Y)/(1 + v'*Q))*Q;
K = K';
K = [K K(1)];
end
39
% Fronteira externa:
do = 0:2*pi/(Ni-1):pi;
Re = 6.5*c;
Xe = Re*cos(do);
Ye = Re*sin(do);
Xe = [ Xe Xe(Mo-1:-1:1)];
Ye = [-Ye Ye(Mo-1:-1:1)];
%% Circunferência
elseif sel == 2
%% Dados de fronteira:
% Fronteira interna:
Mo = (Ni-1)/2 + 1;
do = 0:2*pi/(Ni-1):pi;
Ri = c;
Xi = Ri*cos(do);
Yi = Ri*sin(do);
Xi = [ Xi Xi(Mo-1:-1:1)];
Yi = [-Yi Yi(Mo-1:-1:1)];
% Fronteira externa:
Re = 6.5*c;
Xe = Re*cos(do);
Ye = Re*sin(do);
Xe = [ Xe Xe(Mo-1:-1:1)];
Ye = [-Ye Ye(Mo-1:-1:1)];
%% NACA 00XX
elseif sel == 3
%% Dados de fronteira:
% Fronteira interna:
if XSF == 1
41
Xi = c:-2*c/(Ni-1):0;
else
% Soma da PG:
SPG = -c/2;
% Elementos da PG:
MPG = (Ni-1)/4 + 1;
dX(1,1:MPG-1) = 0;
dX(1) = (XSF-1)*SPG/(XSF^(MPG-1)-1);
for ii = 2:MPG-1
dX(ii) = dX(ii-1)*XSF;
end
% Discretização em (qsi):
Xi(1,1:MPG) = 0;
Xi(1) = c;
for ii = 2:MPG
Xi(ii) = Xi(ii-1) + dX(ii-1);
end
Xi = [Xi (1 - Xi(MPG-1:-1:1))];
end
Mo = (Ni-1)/2 + 1;
Yi(1,1:Mo) = 0;
for ii = 2:Mo
Yi(ii) = t*c*(1.4845*sqrt(Xi(ii)/c) - 0.6300*(Xi(ii)/c) -
...
1.7580*(Xi(ii)/c)^2 + 1.4215*(Xi(ii)/c)^3 -
...
0.5075*(Xi(ii)/c)^4);
end
Xi = [ Xi Xi(Mo-1:-1:1)];
Yi = [-Yi Yi(Mo-1:-1:1)];
% Fronteira externa:
Mo = (Ni-1)/2 + 1;
do = 0:2*pi/(Ni-1):pi;
Re = 6.5*c;
Xe = Re*cos(do);
Ye = Re*sin(do);
Xe = [ Xe Xe(Mo-1:-1:1)];
Ye = [-Ye Ye(Mo-1:-1:1)];
end
%% Translação horizonzal:
Xi = Xi + OXi;
Xe = Xe + OXe;
%% Dados iniciais da malha:
% Determinação da malha computacional:
X(1:Nj,1:Ni) = 0;
Y(1:Nj,1:Ni) = 0;
% Inserção dos dados:
X(1,1:Ni) = Xi;
Y(1,1:Ni) = Yi;
% Inserção dos dados:
X(Nj,1:Ni) = Xe;
Y(Nj,1:Ni) = Ye;
end