Escolar Documentos
Profissional Documentos
Cultura Documentos
CC-297
Elementos de Mecânica dos Fluidos
Computacional
Projeto No.1
1 CONTEXTUALIZAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1 Modelagem Físico-Matemática . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1 Método de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.2 Métodos de Gauss-Seidel e SOR . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.3 Métodos line-Gauss-Seidel e SLOR . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Condições de Contorno e Condições Iniciais . . . . . . . . . . . . . . 9
2.2.1 Cálculo da Condição de Contorno Implícita . . . . . . . . . . . . . . . . . 11
2.3 Malha Computacional e Diagrama de Blocos . . . . . . . . . . . . . 13
3 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.1 Caso I: Espessura 5% . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Caso II: Espessura 10% . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Caso III: Independência de Malha . . . . . . . . . . . . . . . . . . . 21
3.4 Análise do Escoamento . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4 CONCLUSÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
APÊNDICES 29
1 Contextualização
Um dos primeiros passos para melhor entender a mecânica dos fluidos computacional é
a confecção de um código introdutório, que aborde o problema de maneira simples, mas
forneça a base para a solução futura de problemas mais complexos. Assim, o projeto número
1 parte da equação de Laplace, ou seja, tratamos aqui um escoamento potencial, irrotacional,
incompressível e estacionário. As equações de Laplace, discutidas em breve, serão resolvidas
para um aerofólio biconvexo e sem sustentação, ou seja, o mesmo encontra-se alinhado ao
escoamento com ângulo de ataque nulo.
O código construído neste projeto foi feito utilizando o software MATLAB, que
utiliza M-files. Apesar da construção em M-files, todas as rotinas utilizadas no programa
foram construídas pelo autor, visando não prejudicar o aprendizado quanto à necessidade
de construção de rotinas de solução de sistemas matriciais. Assim, o código foi construído
de forma a ser independente de funções pré-estabelecidas.
Neste documento são discutidos o modelo fisico-matemático bem como a implemen-
tação de condições de contorno para a solução do problema. A convergência de diferentes
métodos iterativos é avaliada caso a caso e um breve estudo do escoamento é realizado ao
final deste documento. Todos as rotinas criadas na construção do código computacional
estão anexas a este documento.
2
2 Metodologia
Esse capítulo tem como objetivo realizar uma breve descrição do modelamento do pro-
blema. Primeiramente partimos da análise fisico-matemática do problema. Em seguida
são apresentados os métodos iterativos utilizados. As condições iniciais consideradas para
o cálculo, bem como as condições de contorno aplicáveis são apresentadas e por fim o
algorítmo para construção da malha computacional.
∂ 2φ ∂ 2φ
+ =0 (2.2)
∂x2 ∂y 2
E considerando que aqui temos um potencial de velocidade, as velocidades nas
direções x e y são dadas, respectivamente, pela equação 2.3.
∂φ ∂φ
u= ; v= (2.3)
∂x ∂y
Aqui resolveremos a equação diferencial parcial dada pela equação 2.2 utilizando
métodos de relaxação, ou seja, determinamos sua solução estacionária através de um
método iterativo. Há de se lembrar que a equação 2.2 é modificada, ou seja, após seu
tratamento ela não mais representa a física do problema, porém a solução em estado
estacionário da equação modificada (equação essa que passa a ser tratada em regime
transiente) é a mesma que deve ser obtida para a equação original, esta originalmente em
regime estacionário.
Nesse projeto discretizamos nosso problema utilizando a forma padrão de correção,
ou forma delta. Como fora apresentado no handout deste projeto, a forma delta para a
Capítulo 2. Metodologia 3
n
N · Ci,j + Lφni,j = 0 (2.4)
Como vemos na correção delta, cada termo depende de índices i ej, devido ao
nosso caso ser bidimensional. É importante ressaltar que nosso cálculo é feito num domínio
computacional, discretizado em elementos numa malha computacional. Dessa forma, a
equação 2.4 é resolvida para cada nó desses elementos. Utilizamos uma malha cartesiana
bidimensional no nosso código, de modo que os nós do interior de seus elementos podem ser
enumerados sequencialmente através de suas linhas e colunas. Assim, cada nó é representado
por uma coordenada i, j. A figura 1 representa esquematicamente como funciona nossa
malha, onde são apresentados os nós de cada célula e sua numeração I para colunas e J
para linhas da matriz de cálculo, de modo a representar as direções x e y de nosso domínio
computacional, respectivamente.
n
Ci,j = φn+1 n
i,j − φi,j (2.5)
Capítulo 2. Metodologia 4
É importante ressaltar que esse cálculo apenas é feito nos nós do interior da malha,
ou seja, à excessão das fronteiras, onde serão impostas as condições de contorno. Assim,
o operador correção e o operador resíduo são nulos nos contornos de nosso domínio
computacional.
Como comentado, o operador N depende do método iterativo a ser utilizado. Neste
projeto utilizamos os seguintes métodos:
• Jacobi;
• point-Gauss-Seidel (PGS);
• line-Gauss-Seidel (LGS);
Dos métodos apresentados, os três primeiros são avaliados no ponto, e como veremos,
apenas necessitam de informações previamente calculadas para sua implementação. Já os
dois últimos são calculados linha a linha, e como veremos, irão precisar de um algorítmo
auxiliar para sua resolução.
−2 −2
N= 2
+ (2.7)
∆x ∆y 2
Onde as variações espaciais nas direções x e y são dadas por:
xi+1 − xi − 1 yi+1 − yi − 1
∆x = ; ∆y = (2.8)
2 2
Capítulo 2. Metodologia 5
n −Lφni,j
Ci,j = = φn+1 n
i,j − φi,j (2.9)
N
Assim, é fácil perceber que para cálcular o valor do potencial no ponto i, j para o
passo n + 1, basta fazer conforme a equação 2.10, pois todos os termos do lado esquerdo da
equação são conhecidos, seja por condições iniciais ou de contorno (discutidas em breve),
seja por informações calculadas no passo anterior, com o operador apresentado na equação
2.7.
Lφni,j
φn+1 n
i,j = φi,j − (2.10)
N
Assim, nossa correção delta passa a ser escrita de forma diferente da vista na
equação 2.10, passando a ser escrita da forma:
N · φn+1 n n
i,j = N · φi,j − Lφi,j (2.13)
Capítulo 2. Metodologia 6
Lφni,j φn+1 n
i−1,j − φi−1,j φn+1 n
i,j−1 − φi,j−1
φn+1 n
i,j = φi,j + r
+
∆x2
+
∆y 2
(2.14)
2 ∆x1 2 + 1
∆y 2
2 1+ ∆y 2
2 1+ ∆x2
n Lφni,j n
Ci−1,j n
Ci,j−1
Ci,j = r 1 1
+ ∆x2
+ ∆y 2
(2.15)
2 ∆x2 + ∆y 2
2 1+ ∆y 2
2 1+ ∆x2
2
rotm = q (2.16)
1+ 1 − cos( Mπ+1 )2
Porém esse cálculo não abrangeria o caso bidimensional, de modo que uma das
maneiras seria determinar tal fator empiricamente, ou estimá-lo, por exemplo aplicando a
média dos fatores ótimos nas direções x e y.
Capítulo 2. Metodologia 7
Ex−1 − 2/r δ yy
N= + (2.17)
∆x2 r
Onde temos agora o operador δ yy , definido por:
" #
2 ( )i,j+1 − ( )i,j ( )i,j − ( )i,j−1
δ yy ( )i,j = −
yj+1 − yj−1 yj+1 − yj yj − yj−1
" # (2.18)
1 ( )i,j+1 − ( )i,j ( )i,j − ( )i,j−1
= −
∆y ∆+ y ∆− y
O desenvolvimento das equações 2.17 e 2.18 leva à uma forma parecida com a
apresentada na equação 2.19 a seguir:
!
1 1 1 2 1 1
φn+1
i,j+1 − + + φn+1
i,j + φn+1 =D (2.19)
+
r∆y∆ y r +
∆y∆ y ∆x 2 −
∆y∆ y r∆y∆ y i,j−1
−
φn+1 n n
i,j = Ci,j + φi,j (2.20)
n
N · Ci,j = −Lφni,j (2.21)
Portanto escrevemos:
n n n n
" #
1 n 2 n 1 Ci,j+1 − Ci,j Ci,j − Ci,j−1
2
Ci−1,j − 2
Ci,j + +
− −
= −Lφni,j (2.22)
∆x r∆x r∆y ∆ y ∆ y
Capítulo 2. Metodologia 8
!
1 n 1 1 2 1 n
−
Ci,j−1 − +
+ 2
+ −
Ci,j +
r∆y∆ y r ∆y∆ y ∆x ∆y∆ y
(2.23)
1 n 1
+
Ci,j+1 = −Lφni,j − 2
n
Ci−1,j
r∆y∆ y ∆x
Figura 3 – Breve exemplo de como seria a avaliação ponto a ponto para métodos LGS e
SLOR, e como isso levaria ao problema de implementação por não contemplar
o ponto ( )i,j+1 . Adaptado de [1].
n n n
A · Ci,j−1 − B · Ci,j + C · Ci,j+1 =D (2.24)
A equação 2.24 nos fornece portanto um sistema que forma para cada coluna
da nossa malha um sistema tridiagonal. Esse sistema pode ser resolvido utilizando o
algorítmo de Thomas. Por isso a nomenclatura de nossos métodos: line-G-S e S-Line-O-R.
O algorítmo de Thomas pode ser brevemente apresentado como mostrado na figura 4
Assim, foi apresentado brevemente cada esquema e como resolvê-los considerando
nosso domínio computacional bidimensional. Porém, o método iterativo precisa ser iniciado,
e além disso, nosso aerofólio biconvexo precisa ser considerado durante os cálculos. Para
isso faz-se uso de condições iniciais, que atribuirão um valor inicial para φi,j , e condições de
contorno, que modelarão a presença de nosso aerofólio, bem como as condições aplicadas
nos contornos de nosso domínio, ou seja, suas fronteiras.
Capítulo 2. Metodologia 9
y = 2tx(1 − x) (2.25)
Capítulo 2. Metodologia 10
Na equação 2.25 vemos que a espessura máxima do perfil é dada por t, de modo
que sua espessura local a partir do bordo de fuga respeita a equação dada. É importante
ressaltar que esses valores são adimensionalizados pela corda do aerofólio, que neste caso é
unitária.
A condição de contorno de escoamento tangente na superfície do aerofólio considera
a hipótese de pequenas perturbações, portanto sua velocidade vertical pode ser escrita da
forma:
∂φ dy
v(x, y = 0) = v = (x, 0) = u∞ · , 0≤x≤1 (2.26)
∂y dx
Onde u∞ corresponde à velocidade de escoamento não perturbado. Como já intro-
duzimos essa propriedade, podemos considerar que nas fronteiras laterais e superior de
nosso domínio o escoamento deve se manter na condição de não-perturbado. Portanto,
aplicados a propriedade diretamente em seus nós, considerando uma condição de contorno
de Dirichlet. Como estamos resolvendo a equação de Laplace, as condição de contorno
imposta para escoamento não perturbado nessas fronteiras é dada por:
φ∞ = u∞ · x (2.27)
dição de contorno na linha j = 1, que é atualizada a cada passo iterativo, deve ser feita
obedecendo a seguinte equação no início de cada iteração.
!
∂φ
φni,1 = φni,2 − (y2 − y1 ) · (2.28)
∂y y=0 i
De modo que podemos observar que o último tempo do lado direito da equação 2.28
independe do passo iterativo, como visto na equação 2.26 este termo depende apenas de
características geométricas da malha computacional, do aerofólio biconvexo e da condição
de escoamento não perturbado.
A imposição da condição de contorno na fronteira inferior j = 1 parece trivial, e
é, considerando a atualização para o passo iterativo n. A condição de contorno também
não gera nenhum problema quando consideramos, por exemplo, o método de Jacobi, pois
vimos que:
n −Lφni,j
Ci,j = = φn+1 n
i,j − φi,j (2.29)
N
ou seja, o método de Jacobi apenas depende de elementos do passo iterativo n para cálculo
n
de Ci,j , e portanto de φn+1
i,j . Porém, quando avaliamos métodos do tipo SOR, isso já não
passa a ser tão trivial assim. Para métodos PGS e SOR vimos que:
n Lφni,j n
Ci−1,j n
Ci,j−1
Ci,j = r 1 1
+ ∆x2
+ ∆y 2
(2.30)
2 ∆x2 + ∆y 2
2 1+ ∆y 2
2 1+ ∆x2
n n n n
ou seja, é fácil perceber que se Ci,j depende de Ci,j−1 , então Ci,2 depende agora de Ci,1 , ou,
n+1 n+1
de outra forma, φi,2 depende de φi,1 . Para nós interiores isso não seria problema, já que
para j > 2 a propriedade φn+1 já foi calculada para j − 1. Porém, como dito anteriormente,
n
Ci,j apenas é cálculada para os nós interiores, e portanto quando nos encontramos em
j = 2 não conhecemos o valor de Ci,1 n
, e consequentemente de φn+1 i,1 . Assim esse valor
n
precisa ser calculado de forma implícita. Porém, como calcular Ci,1 implícitamente? A
resposta para essa pergunta é discutida na sessão a seguir.
!
∂φ
φni,1 = φni,2 − (y2 − y1 ) · (2.31)
∂y y=0 i
Capítulo 2. Metodologia 12
! !
∂φ dy ∂φ
= u∞ · , 0≤x≤1 & = 0, x < 0 ou x > 1 (2.32)
∂y y=0 i
dx ∂y y=0 i
Portanto, é fácil perceber que o valor de φy |y=0 é constante para cada coluna i.
Desta forma podemos reescrever a equação 2.31 da forma:
φn+1 n+1
i,1 = φi,2 − ctei (2.34)
φn+1 n n+1 n
i,1 − φi,1 = φi,2 − φi,2 − (ctei − ctei ) (2.35)
n n
Ci,1 = Ci,2 (2.36)
Tendo posse dessa informação agora sim se torna trivial a imposição da condição
n
de contorno implícita para o cálculo de Ci,2 , e consequentemente φn+1
i,2 para os métodos
PGS e SOR. Nesse caso a equação 2.30 pode ser escrita para j = 2 como:
n Lφni,2 n
Ci−1,2 n
Ci,1
Ci,2 = r 1 1
+ ∆x2
+ ∆y 2
(2.37)
2 ∆x2 + ∆y 2
2 1+ ∆y 2
2 1+ ∆x2
n 1 Lφni,2 n
Ci−1,2
Ci,2 · 1 − ∆y 2
= r 1 1
+ ∆x2
(2.38)
2 1+ ∆x2
2 ∆x2 + ∆y 2
2 1+ ∆y 2
n
Definimos, portanto, na equação 2.38 o cálculo do operador correção Ci,2 para os
métodos PGS e SOR na linha j = 2 utilizando a condição de contorno em j = 1 implícita.
Assim como os métodos ponto, os métodos linha LGS e SLOR também sofrem com a
Capítulo 2. Metodologia 13
n n
mesma necessidade: é necessário Ci,1 para o cálculo de Ci,2 . Neste caso, para os métodos
LGS e SLOR podemos escrever:
n n n
A · Ci,1 − B · Ci,2 + C · Ci,3 =D (2.39)
n n
(A − B) · Ci,2 + C · Ci,3 =D (2.40)
n
Através da equação 2.40 conseguimos calcular o operador correção Ci,2 , utilizando o
algorítimo de Thomas, para os métodos PGS e SOR na linha j = 2 utilizando a condição de
contorno em j = 1 implícita. Dessa maneira concluímos a discusão sobre a implementação
das condições de contorno para nosso modelo. Resta agora discutir quanto à inicialização
do modelo.
Para a inicialização do cálculo utilizamos a mesma estratégia para as fronteiras do
nosso domínio: consideramos o escoamento inicialmente como não perturbado, e a partir
disso executamos o cálculo iterativo para encontrar a solução estacionária para a influència
do aerofólio em nosso domínio. Portanto todo o domínio é inicializado tal qual descrito na
equação 2.41.
φ∞ = u∞ · x (2.41)
3 Resultados
Neste capítulo apresentaremos os resultados para dois casos: para um aerofólio de espessura
5% e outro com espessura 10%. Para o primeiro caso avaliaremos todos os métodos iterativos
descritos neste documento, já para o segundo apenas os métodos linhas serão avaliados.
Nosso objetivo é comparar as capacidades de convegência de cada método, e a proximidade
dos resultados relativos aos dados de referência.
Figura 10 – Mensagens de saída do código ao fim de cada iteração para testes a ε < 10−8 .
Para esse nível de resíduo o método de Jacobi não converge. O método alcança
um resíduo inferior a ε < 10− 6 após 6000 iterações e imediatamente após começa a
divergir, alcançando o critério de parada para número máximo de iterações com um
resíduo superior a 1. Os métodos PGS e SOR alcançam o resíduo esperado para 3543 e
432 iterações, respectivamente. Neste caso, vemos que o método SOR é quase 10x mais
rápido, considerando o fator de relaxação de 1, 80 aplicado, econtrado empiricamente.
Interessantemente o méotodo SOR diverge para um fator de 1, 90. Com isso vemos o poder
n n n
de convergência ao se calcular Ci,j com valores atualizados de Ci−1,j e Ci,j−1 .
Se comparamos os métodos linha com métodos ponto vemos novamente um decrés-
cimo no número de iterações. O método LGS alcança 2739 iterações, aproximadamente
20% mais rápido que o método PGS. Similarmente, o método SLOR tem seu número
de iterações reduzidas para 185, mais da metade do número alcançado pelo SOR. Esse
aumento da velocidade de convergência está diretamente ligada ao fato de os métodos linha
n n n n
utilizarem não só Ci−1,j e Ci,j−1 mas também Ci,j+1 no cálculo de Ci,j . Ou seja, quanto mais
n
atualizados são os parâmetros utilizados para o cálculo de Ci,j , mais rapidamente se atinge
a convergência. Para o método SLOR o fator de relaxação foi encontrado empiricamente
para um valor de 1, 88. Para os métodos SOR e SLOR fatores de relaxação diferentes dos
encontrados tendem a desacelerar a convergência.
O coeficiente de pressão foi calculado utilizando sua formulação para escoamento
incompressível, como apresentado na equação 3.1. Para o cálculo as velocidades na linha
virtual j = 1, 5(y = 0) foram calculadas como a média das velocidades entre as linhas
j = 2 e j = 1.
u2
CP = 1 − (3.1)
u2∞
Capítulo 3. Resultados 18
Figura 12 – Histórico do erro errCP para número máximo de iterações igual a 12000.
Figura 13 – Mensagens de saída do código ao fim de cada iteração para número máximo
de iterações fixo e igual a 12000.
Capítulo 3. Resultados 20
Figura 14 – Mensagens de saída do código ao fim de cada iteração para testes a ε < 10−8 .
Podemos observar, mais uma vez, a importância do fator de relaxação para alcançar
a rápida convergência do cálculo. Assim como no caso anterior, a solução estacionária
não se altera com a mudança do método iterativo, porém ao compararmos o método
de pequenas perturbações com nossa referência a potencial completo percebemos que a
concordância entre ambas não atinge o mesmo nível do caso anterior, como mostrado
na figura 16. Com isso vemos a influência da espessura do aerofólio na acurácia de cada
Capítulo 3. Resultados 21
método, seja pequenas pertubações, seja potencial completo. Neste caso podemos inferir
que a espessura de 10% já é considerável para o método de pequenas perturbações, de modo
que isso leva a diminuir sua acurácia. Já para espessura de 5% vimos melhor concordância.
01 02 03 04
ILE 11 21 31 21
ITE 31 61 71 61
IMAX 41 81 101 81
JMAX 12 15 18 24
XSF 1,25 1,20 1,15 1,20
YSF 1,25 1,20 1,15 1,20
04, que apresenta os mesmos parâmetros que a malha 02, porém tem uma malha 2x mais
fina na direção y, obtendo 1944.
O refino para malha 04 acaba demandando um tempo consideravelmente maior para
atingir convergência, com melhora visível do erro calculado para o coeficiente. Porém, esse
erro já é inferor a 10−10 , e portanto neste caso não há justificativa para se utilizar uma malha
com refino superior à da malha 02. Isso também pode ser confirmado com a distribuição
do coeficiente de pressão pode ser avaliada na figura 18. Neste caso vemos que o refino
da malha produz sim melhores resultados, mais próximos do potencial completo, e que
tais resultados para malhas 02, 03 e 04 são equivalentes. Ou seja, considerando a acurácia
alcançada e o tempo demandado para cada malha, não há melhora de custo-benefício para
uma malha mais fina do que a malha 02
os pontos. Os pontos de estagnação também são observados pelo alto coeficiente de pressão
encontrado nestes pontos.
4 Conclusões
Referências
clear
close all
clc
%% Condições do Escoamento e do Aerofólio:
% O escoamento não perturbado tem componentes de velocidade apenas na
% direção (x), portanto escrevemos:
uo = 1;
% O aerofólio utilizado trata-se de um aerofólio simétrico biconvexo e
% sem sustentação, de espessura normalizada pela corda, t.
% O aerofólio tem equação definica por y(x) = 2tx(1-x), logo sua
% derivada é dada por y_x(x) = 2t(1-2x).
t = 0.05;
A_MAIN(choice,res,STP,N,uo,t,graph,salve,ILE,ITE,IMAX,JMAX,XSF,YSF);
31
%% Método Iterativo
[phi,CP,u,v,cont,ER1,ER2] = ...
C_SOLVE(choice,R,res,uo,phio,phiy,X,Y,IMAX,JMAX,STP,N);
%% Saída para fim de cálculo:
fprintf('-Fim de cálculo para %d iterações e resíduo %13.12f.',...
cont,ER1(end))
fprintf('\n');
fprintf('\n');
%% Análise gráfica de convergência e coeficiente de pressão:
if graph == 1
G_PLOT(X,ILE,ITE,phi,Yx,uo,t,ER1,ER2);
end
%% Salvando arquivos:
if salve == 1
% Escrevendo os vetores X e Y no formato matricial:
XX(1:JMAX,1:IMAX) = 0;
for jj = 1:JMAX
XX(jj,:) = X;
end
YY(1:JMAX,1:IMAX) = 0;
for ii = 1:IMAX
YY(:,ii) = Y;
end
% Determinando as strings para nomenclatura de arquivo
% Tipo de método:
if choice == 1
choice = '01JACOBI';
elseif choice == 2
choice = '02PGS';
elseif choice == 3
choice = '03SOR';
elseif choice == 4
choice = '04LGS';
elseif choice == 5
choice = '05SLOR';
end
% Tipo de convergència:
res = sprintf('%d', res);
% Amrazenando os arquivos de interesse:
name = [choice '_01X_RES0' res '.txt'];
fid = fopen(name,'wt');
for jj = 1:JMAX
fprintf(fid,'%g\t',XX(jj,:));
fprintf(fid,'\n');
end
fclose(fid);
fprintf(fid,'%g\t',phi(jj,:));
fprintf(fid,'\n');
end
fclose(fid);
elseif res == 2
err = 1/cont;
end
%% Parada de simulaçâo:
% Critério de parada: número máximo de iterações:
if cont > (N-1)
fprintf('-Número máximo de iterações alcançado: %d.',N)
fprintf('\n');
break
end
% Divergência encontrada:
if ER1(cont) > 1E5
fprintf('-Divergência. Resíduo: %13.12f.',ER1(cont))
fprintf('\n');
break
end
%% Cálculo do operador correção:
% Entrada de coluna -> caminho em (x):
for ii = 2:(IMAX-1)
% Entrada de linha -> caminho em (y):
for jj = 2:(JMAX-1)
%% Chamada para método de Jacobi:
if choice == 1
% Obtenção do operador resíduo e de C(n)(ii,jj):
[C(jj,ii)] = D_JACO(X,Y,ii,jj,Lphi(jj,ii));
end
%% Chamada para métodos PGS e SOR:
if choice == 2 || choice == 3
% Obtenção do operador resíduo e de C(n)(ii,jj):
[C(jj,ii)] = D_SOR(X,Y,ii,jj,C,R,Lphi(jj,ii));
end
%% Chamada para métodos LGS e SLOR:
if choice == 4 || choice == 5
% Obtenção do operador resíduo e dos coeficientes:
[COEF] = D_SLOR(X,Y,ii,jj,C,R,Lphi(jj,ii));
% Determinação dos coeficientes da matriz de Thomas:
AAA(jj-1) = COEF(1);
BBB(jj-1) = COEF(2);
CCC(jj-1) = COEF(3);
% Vetor resposta para cálculo B(AAA,BBB,CCC)*C = RHS:
RHS(jj-1) = COEF(4);
end
end
if choice == 4 || choice == 5
%% Cálculo para métodos LGS e SLOR - Algorítimo de Thomas:
% Obtenção da matriz corretora C(n)(ii,jj):
[C(2:(JMAX-1),ii)] = E_THOM(AAA,BBB,CCC,RHS,JMAX-2);
end
end
%% Cálculo de phi(n+1):
phi (1:JMAX,1:IMAX) = C (1:JMAX,1:IMAX) + phin(1:JMAX,1:IMAX);
%% Atualização para próximo passo:
phin(1:JMAX,1:IMAX) = phi(1:JMAX,1:IMAX);
CPn (1:JMAX,1:IMAX) = CP (1:JMAX,1:IMAX);
end
end
37
figure(1)
semilogy(ER1,'linewidth',2)
hold on
semilogy(ER2,'linewidth',2)
43
hold off
grid on
grid minor
xlabel('Iteração')
ylabel('log10')
legend('L\phi','err_{CP}')
figure(2)
plot(XC ,-CP ,'d',...
XCo,-CPo,'linewidth',2)
grid on
grid minor
xlabel('x/c')
ylabel('-c_P')
legend('Resultado','Referência')
end
44