Sie sind auf Seite 1von 25

Universidade Federal do Esprito Santo

Centro tecnolgico
Programa de ps graduao em Engenharia Mecnica

Victor Luiz Gripa

RESOLUO DA EQUAO DIFERENCIAL DE POISSON UTILIZANDO


MTODOS DE INCREMENTO NO TEMPO IMPLCITO E CRANK-NICOLSON

Vitria, 25 de maio de 2014

1. INTRODUO:

A distribuio de presso em reservatrios de petrleo de baixa


compressibilidade pode ser simulada pela equao de Poisson:

p
2 p 2 p
=a
+
t
x2 y 2

O problema abordado o problema dos 5 poos de extrao de petrleo. A


configurao bsica mostrada da figura 01 abaixo. Devido simetria do problema,
pode-se analisar apenas o quadrante superior do mesmo.

Condies de contorno do problema:


Para o problema analisado, as condies de contorno so:

A derivada normal da presso nula nas arestas (devido simetria do campo


de presso). Matematicamente, tem-se:

p
( x , y ,t )=0 para( x , y) R
n

As presses no poo injetor (0,0) e nos poos produtores (1,1) so


conhecidas:
p ( 0,0,t )= p I
p (1,1, t )= pref

Condio inicial:

A condio inicial a ser adotada :

p ( x , y ,0 )= pref

Neste exerccio vamos considerar os algoritmos implcito e Crank-Nicolson


para resolver a equao de Poisson bidimensional pelo mtodo das diferenas
finitas. Alm disso, deve-se obter o perfil de velocidades no domnio em questo
utilizando a Lei de Darcy presente na descrio deste trabalho.
A fim de cumprir este objetivos e objetivos mais detalhados, fez-se primeiro
um estudo terico do problema em questo. Em posse das equaes que regem o
problema para os dois mtodos de implementao temporal, desenvolveu-se uma
rotina de cdigos que faz a resoluo do problema utilizando os dois mtodos (a
escolha do mtodo feita utilizando-se uma questdlg) e o ps processamento dos
resultados.

2. DESENVOLVIMENTO TERICO DO PROBLEMA:

A seguir faz-se mostra-se a teoria posteriormente utilizada no cdigo.


Discretizao no espao:
Divide-se o domnio mostrado no primeiro quadrante da figura 1 em
clulas no eixo x e

m1

n1 clulas no eixo y.

Utilizando-se Sries de Taylor, aproxima-se a derivada segunda por uma


equao linear:
2 p p i1, j2 pi , j +p i+1, j

x2
h x2
2 p p i , j12 pi , j + pi , j+1

y2
h y2
Onde h x
h x=

Lx
n1

hy=

Ly
m1

e hy

so os tamanhos dos elementos em x e y.

Desta forma a equao de Poisson se torna:

p
2 pi , j + p i+1, j pi , j12 pi , j + pi , j+1
p
=a i1, j
+
t
h x2
h y2

Mtodo Implcito:
Segundo a metodologia implcita, tem-se:
pi , jk +1 p i , jk+1 pi , jk

t
t
Ou seja:

pi , j

k +1

pi , j
p
=a i1, j
t

k+1

2 p i , j

k+1

+ pi+1, j

k+1

h x2

pi , j1

k+1

2 pi , j

k+1

+ pi , j+1

h y2

k +1

Rearranjando os termos, tem-se:


a
a
2a 2a 1
a
a
1
p i , j1k +1+ 2 p i1, jk +1+ 2 + 2 +
pi , jk+ 1+ 2 p i+1, j k+1 + 2 pi , j+1k+1 =
pi , j k
2
t
hy
hx
hx h y t
hx
hy

( )

( )

( )

( )

( )

Utilizando-se a Indexao Lexicogrfica, tem-se:


a
a
2a 2a 1
a
a
1
p Ink +1+ 2 p I1k +1+ 2 + 2 +
p I k+1 + 2 p I+1k +1+ 2 p I +nk+1=
pIk
2

t
hy
hx
hx h y
hx
hy

( )

( )

( )

( )

( )

Pode-se verificar que os coeficientes da equao acima so constantes para


todo I.
Faz-se:
aI=

2a 2a 1
+ +
h x2 h y 2 t

bI=

a
h x2

cI =

a
h x2

dI =

eI =

a
h y2

a
2
hy

Colocando-se em linguagem matricial, tem-se:


Ap=b
Onde a matriz A mostrada abaixo:

aI

cI

bI

aI

eI
cI

bI

eI

...

dI

...

...
cI

...
dI

bI
...

eI

aI

cI

bI

aI

cI

bI

aI

dI

E o vetor dos termos independentes b mostrado a seguir:

( 1t ) p

k
1

( 1t ) p

k
2

..
.

( 1t ) p

k
I

..
.

( 1t ) p

k
N

Mtodo de Crank-Nicolson
Segundo o mtodo de Crank-Nicolson, tem-se:

pi , j
t

k +1

pi , j

k+1

k+ 1

pi , j f i , j f i , j
=
t
2

Onde f i , j

representa a funo linear de aproximao de

pi , j . Assim

substituindo as equaes anlogas ao mtodo implcito, tem-se:

pi , jk +1 pi , jk
=
t

[(

p i1, jk +12 p i , jk +1+ p i+1, jk+1 pi , j1k+12 pi , jk+1 + pi , j+1k +1


pi1, jk 2 pi , jk + pi
a
+
+a
hx 2
h y2
h x2

) (

Rearranjando os termos, tem-se:

a
a
a
a
1
a
a
a
pi , j1k+1 +
pi1, jk+1 + 2 + 2 +
pi , jk+1 +
pi+1, jk+1 +
pi , j+1k +1=
pi , j
2
2
2
2
2h y
2 hx
h x h y t
2 hx
2h y
2 h y2

( )

( )

( )

( )

( )

Utilizando-se a Indexao Lexicogrfica, tem-se:

a
a
a
a
1
a
a
a
p Ink+1 +
p I1k+1 + 2 + 2 +
pI k+1 +
pI +1k+1 +
pI +nk+ 1=
p Ink +
2
2
2
2
2h y
2 hx
h x h y t
2 hx
2hy
2 hy2
2

( )

( )

( )

( )

( )

As condies de contorno so as mesmas para os dois casos. A diferena se


da na montagem da matriz dos coeficientes (apenas porque os coeficientes so
diferentes) e na montagem do vetor dos termos independentes.

Condies de contorno:
Foram dadas condies de contorno de fluxo nulo e condies de contorno de
valor prescrito. Ambas esto descritas a seguir:
1 Fluxo nulo:
Agora encontra-se as equaes que compe o sistema linear provindas da
condio de contorno de fluxo zero:
p
( x , y ,t )=0 para( x , y) R
n

Esta condio de contorno pode ser avaliada para as quatro fronteiras do


domnio mostrada na figura 01:
1.1 Fronteira inferior:

p
( x , 0,t )=0 ; 0< I <n
y

Novamente, utiliza-se a expanso em sries de Taylor para avaliar a derivada.


Utiliza-se uma aproximao de diferenas centrais, ou seja:
pi , 0 pi ,+1 pi ,1

=0
y
h y2
Logo:
pi ,1 pi ,+1
Ou seja:
pI n p I +n

Analisa-se a equao caracterstica dos ns pertencentes fronteira inferior


do domnio do problema:
a
a
2a 2a 1
a
a
1
p Ink +1+ 2 p I1k +1+ 2 + 2 +
p I k+1 + 2 p I+1k +1+ 2 p I +nk+1=
pIk
2

t
hy
hx
hx h y
hx
hy

( )

( )

Note que os termos

pI n

( )

( )

( )

na verdade no fazem parte do domnio do

problema, porm a condio de contorno permite que acertemos este problema.


A nova equao se torna a seguinte:
a
2a 2a 1
a
a
1
p I1k+1 + 2 + 2 +
p I k+1 + 2 p I+1k +1+ 2 2 pI +nk +1=
pIk
2

t
hx
hx h y
hx
hy

( )

( )

Ou seja os novos coeficientes so:


a a
a
~
e I =e I +d I = 2 2 =2 2
hy h y
hy
~
d I =0

( )

Esta nova equao deve ser substituda no sistema para todo ponto

0< I <n

.
1.2 Fronteira superior:
Na fronteira superior, tem-se:
p
( x , 1,t )=0 ; N n<I < N
y
Onde:
N=mn
Analogamente ao caso anterior o ponto

pI +n no possui significado fsico,

porm a condio de contorno permite avalia-lo da seguinte maneira:


pi , m pi , m+1 pi , m1

=0
y
hy2
pi ,m+1 p i ,m1
pI +n p In
Portanto os novos coeficientes se tornam:

a a
a
~
d I =d I + e I = 2 2 =2 2
hy hy
hy
~
e I =0

Esta nova equao deve ser substituda no sistema para todo ponto
Nn< I < N .

1.3 Fronteira esquerda:


A condio de contorno aplicada fronteira esquerda torna-se:
p
( y , 0,t )=0; I =kn+1(k 1)
x
Analogamente, a condio de contorno utilizando aproximao centralizada
fornece:
pI 1 p I+1

Portanto os novos coeficientes se tornam:

a a
a
~
c I =c I +b I = 2 2 =2 2
hx hx
hx
~
b I =0
Isso vlido para

I =kn+1(0 k m1)

1.4 Fronteira direita:


A condio de contorno a seguinte:
p
( y , 1, t ) =0 ; I =kn(k 0)
x

Novamente, utilizando a analogia aos casos anteriores, deve-se alterar os


coeficientes de tal forma:

a a
a
~
b I =b I +c I = 2 2 =2 2
hx h x
hx
~
c I =0

Isso vlido para


2

I =kn(1 k m) .

Valor prescrito:

Finalmente avalia-se as condies de valor prescrito:


p1,1= p I
O que implica que a equao referente ao ponto

I =1 possuir os

seguintes coeficientes:
~
a I =1
~
b I =0
~
c I =0
~
d I =0
E o termo do vetor independente tambm se altera para:
b I= pI

Analogamente tem-se a seguinte condio de contorno de valor prescrito:


pn ,m = pref
Esta altera os coeficientes da equao referente ao ponto
seguinte forma:
~
a I =1
~
b I =0
~
c I =0

I =N

da

~
d I =0
E o termo do vetor independente tambm se altera para:
b I = pref

IMPLEMENTAO:

A rotina gerada est exposta abaixo. Ela utiliza como entrada os parmetros o
nmero de nos desejado no eixo x e no eixo y o incremento temporal e o tempo final
no qual desejasse visualizar a soluo. A rotina gera como sada um grfico onde
mostra a distribuio de presso em um mapa de curvas e o campo de velocidade.
Comentrios foram feitos no prprio cdigo:
function [A,pind,p]=diferencasfinitas_2D_transiente (n,m,delta_t,t)
%Entradas do programa:
%n o nmero de ns no eixo x
%m o nmero de ns no eixo y
%deta_t o incremento de tempo
%t o tempo no qual queremos a soluo
%% Escolha do mtdo de incremento temporal:
% utilizou uma questdlg para a escolha do mtodo de incremento no tempo
metodo_escolhido = questdlg('Qual o mtodo a ser utilizado?', ...
'Mtodo de incremento no tempo', ...
'Implcito','Crank-Nicolson','Implcito');
%% Atribuio e clculo de constantes:
kmax=round(t/delta_t); %nmero de steps temporais para obtermos a soluo
desejada
Lx=1; %comprimento do domnio do problema em x
Ly=1;%comprimento do domnio do problema em y
K=100; %K a permeabilidade do meio
mi=1; %mi a viscosidade do leo
fi=0.1; %fi a porosidade do meio
pref=0; % a presso no poo extrator e apresso iniciao no domnio do
problema
pi=100; % a presso no poo injetor;
c=10; % a compressibilidade do meio
%calculo de constantes:
hx=Lx/(n-1);
hy=Ly/(m-1);
N=m*n; %nmero de pontos do domnio usado na idexao Lexicogrfica.
a=K/(mi*fi*c);
%coeficientes do sistema linear no sistema de indexao lexicogrfico
switch metodo_escolhido
case('Implcito')
ai=2*a/(hx^2)+2*a/(hy^2)+1/delta_t;
bi=-a/(hx^2);
di=-a/(hy^2);
ci=bi;
ei=di;
case('Crank-Nicolson')
ai=a/(hx^2)+a/(hy^2)+1/delta_t;
bi=-a/(2*hx^2);
di=-a/(2*hy^2);
ci=bi;
ei=di;
end

%% Montagem da matriz A
%A matriz A foi montada usando a funo Toeplitz.
r=zeros(N,1);
r(1,1)=ai;
r(2,1)=bi;
r(n+1,1)=di;
A=toeplitz(r);
%atribuio das condies de contorno:
for i=1:n
%fronteira inferior:
A(i,i+n)=A(i,i+n)+di;
%Fronteira Superior:
A(N-i+1,N-i+1-n)=A(N-i+1,N-i+1-n)+ei;
end
for i=0:m-1
%Fronteira esquerda:
A(i*n+1,i*n+2)=A(i*n+1,i*n+2)+bi;%faz ci=ci+bi
if(i>0) %utilizado para evitar que tente-se zerar o bi do ponto I=1
%pois o bi deste ponto no existe na matriz dos coeficientes.
A(i*n+1,i*n+1-1)=0; %torna o bi destes pontos igual a zero
end
%fronteira direita:
A((i+1)*n,(i+1)*n-1)=A((i+1)*n,(i+1)*n-1)+ci; %faz bi=bi+ci
if(i~=m-1) %utilizado para evitar que tente-se zerar o ci do ponto

I=1

end

%pois o ci deste ponto no existe na matriz dos coeficientes


A((i+1)*n,(i+1)*n+1)=0; %torna o ci destes pontos igual a zero
end

%Condies de valores prescritos:


A(1,:)=0;
A(1,1)=1;
A(N,:)=0;
A(N,N)=1;
%% Resoluo do sitema liner para cada step de tempo
%atribuio do vetor b no tempo t=0:
switch metodo_escolhido
case('Implcito')
b=ones(N,1)*pref/delta_t;
case('Crank-Nicolson')
for i=2:N-1
b=ones(N,1)*pref*(1/delta_t-a/(hx^2)-a/(hy^2)-bi-ci-di-ei);
end
end
b(1,1)=pi; %a presso no poo injetor no varia.
b(N,1)=pref; %a presso no poo extrator no varia.
p=zeros(N,kmax); %cria a matriz que vai armazenar os resultados de
presso.
%Os parmetros utilizados para a resoluo dos sistemas lineares pelo
%mtodo GMRES foram determinados pela analogia ao exercicio 03.

kmaxgmres=2000; %numero maximo de vetores utilizados na base


lmax=100; %numero maximo de reestarts do sistema de resoluo para
alcanar
%a tolerncia requerida
tol=10^-5;
for k=1:kmax
[p(:,k),niter] = gmres(A,b,tol, kmaxgmres, lmax);
%atribuio do vetor b no tempo k:
switch metodo_escolhido
case('Implcito')
b=p(:,k)/delta_t;
case('Crank-Nicolson')
for i=n+1:N-(n+1)
b(i)=p(i,k)*(1/delta_t-a/(hx^2)-a/(hy^2))-di*p(i-n,k)bi*p(i-1,k)+...
-ci*p(i+1,k)-ei*p(i+n,k);
end
for i=2:n-1 %A presso p(I-n) no existe e a equao
corrigida
%com a condio de contorno inferior
b(i)=p(i,k)*(1/delta_t-a/(hx^2)-a/(hy^2))-bi*p(i-1,k)+...
-ci*p(i+1,k)-(ei+di)*p(i+n,k);
end
for i=N-n+1:N-1% a presso p(I+n) no existe e a equao

corrigida

%com a condio de contorno superior


b(i)=p(i,k)*(1/delta_t-a/(hx^2)-a/(hy^2))-(di+ei)*p(in,k)-bi*p(i-1,k)+...
-ci*p(i+1,k);
end
for i=2*n:n:N-n % a presso p(I+1) no existe e a equao
corrigida
%com a condio de contorno direita
b(i)=p(i,k)*(1/delta_t-a/(hx^2)-a/(hy^2))-di*p(i-n,k)+...
-(bi+ci)*p(i-1,k)-ei*p(i+n,k);
end
for i=n+1:n:N-2*n+1% a presso p(I-1) no existe e a equao
corrigida

%com a condio de contorno esquerda


b(i)=p(i,k)*(1/delta_t-a/(hx^2)-a/(hy^2))-di*p(i-n,k)+...
-(ci+bi)*p(i+1,k)-ei*p(i+n,k);
end
%Existem dois casos especiais onde duas condies de contorno
%so necessrias, so eles: I=n e I=N-n
b(n)=p(n,k)*(1/delta_t-a/(hx^2)-a/(hy^2))-(bi+ci)*p(n-1,k)

+...

-(di+ei)*p(n+n,k);
b(N-n+1)=p(N-n+1,k)*(1/delta_t-a/(hx^2)-a/(hy^2))-(bi+ci)*p(N-

n+1+1,k)+...
end

-(di+ei)*p(N-n+1-n,k);

end

b(1,1)=pi;
b(N,1)=pref;
disp(kmax-k) %mostra o andamento do cdico para o usuario

%% Mudana da notao lexicogrfica para notao indicial cartesiana:


pind=zeros(m,n); %criao da matriz que armazena as presses em seus
%lugares geomtricos.
for j=0:m-1
pind(j+1,:)=p(j*n+1:(j+1)*n,kmax);
end
nome_planilha=strcat(num2str(n),'x',num2str(m),'-',num2str(kmax),'-',metodo
_escolhido);
xlswrite('Matriz_de_presses',pind,nome_planilha); %Salva a matriz de
presses em um
%arquivo xls.
%% Clculo da velocidade
%Para o clculo da velocidade utiliza-se o resultado de presso na notao
%indicial:
vx=zeros(m,n);
vy=zeros(m,n);
%devido condio de contorno de derivada de presso em relao normal
%ser nula, tem-se:
vx(:,1)=0;
vx(:,n)=0;
vy(1,:)=0;
vy(m,:)=0;
%As componentes x e y da velocidade foi obitida utilizando-se uma
aproximao de
%diferenas centrais para a derivada da presso.
for i=2:n-1
vx(:,i)=-K/mi.*(pind(:,i+1)-pind(:,i-1))./(2*hx);
end
for i=2:m-1
vy(i,:)=-K/mi.*(pind(i+1,:)-pind(i-1,:))./(2*hy);
end
%% Ps processameto
%cria um grfico de curvas de presses e do campo de velocidade.
x=[0:hx:1];
y=[0:hy:1];
figure
cs=contourf(x,y,pind,[10:5:40 40:1:60 60:5:100]);%cria as linhas de
contorno
%nos valores do vetor enviado para a funo
clabel(cs,[10:10:30 30:2:70 70:10:100]); %atribui labels apenas nos
contornos
%do vetor de entrada da funo.
hold on
quiver(x,y,vx,vy,7,'r','LineWidth',0.5)
axis([-0.01 1.01 -0.01 1.01])
title(strcat('Presso e velocidades - Mtodo ','
',metodo_escolhido),'fontsize',16)
saveas(gcf,strcat(num2str(n),'x',num2str(m),'-',num2str(kmax),'-',metodo_es
colhido,'.jpg'))
end

EXPERIMENTOS NUMRICOS:

O cdigo foi executado vrias vezes nas mais variadas situaes de modo a
identificar comportamentos no desejados. Alguns foram identificados e corrigidos
ou mitigados. A seguir encontram-se algumas imagens geradas pela rotina.
a) Mtodo implcito com n=10, m=10 e t=0,1.

b) Mtodo Crank-Nicolson com n=10, m=10 e t=0,1.

c) Mtodo implcito com n=10, m=10 e t=0,01.

d) Mtodo Crank-Nicolson com n=10, m=10 e t=0,01.

Teste de convergncia do mtodo Crank-Nicolson


A partir das imagens acima pode-se verificar que o mtodo Crank-Nicolson precisou
de intervalos de tempo menores para obter a resposta correta. Com base nisso, fezse uma anlise da convergncia do mtodo Crank-Nicolson. A seguir encontram-se
os resultados de presses utilizando o mtodo de Crank-Nicolson com 2,5,20,50 e
100 intervalos de tempo respectivamente. Todos os testes foram feitos com n=m=10.
a) Crank-Nicolson com intervalos de tempo de 0,5 (2 steps)

b) Crank-Nicolson com intervalos de tempo de 0,2 (5 steps)

c) Crank-Nicolson com intervalos de tempo de 0,1 (10 steps)

d) Crank-Nicolson com intervalos de tempo de 0,05 (20 steps)

e) Crank-Nicolson com intervalos de tempo de 0,015 (100 steps)

Pode-se verificar que o mtodo Crank-Nicolson necessita de mais iteraes para


convergir (em torno de 20).

Testes com n diferente de m:


a) Mtodo implcito com n=20, m=10 e t=0,01.

b) Mtodo Crank-Nicolson com n=20, m=10 e t=0,01.

c) Mtodo implcito com n=10, m=20 e t=0,01.

d) Mtodo Crank-Nicolson com n=10, m=20 e t=0,01.

Sabe-se que o mtodo das diferenas finitas tem uma caracterstica pontual. Devido
a este fato a obteno de gradientes de funes um ponto delicado. Pode-se notar
a caracterstica pontual deste mtodo analisando a variao do gradiente em funo
da forma dos elementos utilizados (n=10 e m=20 ou n=20 ou m=10). Para melhor
visualizao, mostra-se as duas imagens abaixo:

Pode-se notar que os vetores da velocidade (por consequncia o gradiente da


presso) variam razoavelmente de acordo com o ponto em que se encontram.

Resposta refinada

A seguir, encontra-se o campo de presso obtido utilizando-se uma malha refinada


(n=m=50):

Observao: a priori no existia a exigncia de plotar o campo de presso em 3D,


por isso todos os grficos iniciais foram feitos utilizando curva de nvel. Este ltimo
grfico foi plotado em 3D para mostrar a possibilidade de tal tcnica.

CONCLUSO:

Primeiramente, pode-se notar que o cdigo criado genrico o suficiente para


analisar casos com n<m, n=m e n>m, bem como variados incrementos temporais.
Alm disso, pode-se utilizar as condies de contorno de valor prescrito e de fluxo
constante e pode-se verificar a utilidade do mtodo das diferenas finitas
bidimensional.
De acordo com as imagens mostradas acima pode-se perceber alguns pontos
destacveis. Estes esto descritos a seguir:
O mtodo Crank-Nicolson precisa de incrementos de tempo menores para
obter o resultado preciso para t=1. Ou seja, o mtodo implcito convergiu mais
rapidamente neste problema.
Percebeu-se tambm que aumentando-se o nmero de ns tem-se uma
soluo mais refinada, porm o tempo de processamento maior devido ao
aumento da ordem dos sistemas lineares que devem ser resolvidos.
Outro ponto notvel foi a caracterstica local do mtodo das diferenas finitas.
Ode, pode-se mostrar uma variao razovel no gradiente da funo presso em
pontos prximos um ao outro.
Os campos de presso obtidos foram (como esperado) simtricos em relao
diagonal que liga os poos e possuem um valor mdio (50) na diagonal oposta aos
poos.
Quanto velocidade, como era esperado ela maior onde h maior gradiente
de presso, isto , nas partes prximas aos poos injetores e extratores. Alm disso,
de uma forma geral a velocidade maior na parte central do campo de presso que
prximo de seus limites. Isso ocorre devido s condies de contorno de fluxo nulo
nas extremidades do meio poroso estudado.

Das könnte Ihnen auch gefallen