Download PDF
ads:
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
CENTRO DE CIÊNCIAS EXATAS E DA TERRA
CENTRO DE TECNOLOGIA
PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA E ENGENHARIA DO
PETRÓLEO
ANÁLISE DE MODELOS GEOLÓGICOS UTILIZANDO PERCOLAÇÃO DINÂMICA
RICARDO WANDERLEY DE OLIVEIRA
Orientador: Prof. Dr. Liacir dos Santos Lucena
Co-Orientador: Prof. Dr. Joaquim Elias de Freitas
Dissertação de Mestrado apresentada ao Pro-
grama de Pós-Graduação em Ciência e En-
genharia do Petróleo da Universidade Federal
do Rio Grande do Norte como requisito par-
cial à obtenção do grau de Mestre em Ciência
e Engenharia do Petróleo.
Natal, Março de 2009
ads:
Livros Grátis
http://www.livrosgratis.com.br
Milhares de livros grátis para download.
Em Especial
Aos meus pais,
Eclair de Oliveira e Maria Angelita Wanderley de Oliveira,
pela orientação de vida e ensinamentos valiosos.
À minha esposa,
Irilene Pereira Wanderley de Oliveira
e aos meus filhos,
Bruna Pereira Wanderley de Oliveira e Lucas Pereira Wanderley de Oliveira,
pelo apoio e incentivo incondicionais.
i
ads:
Agradecimentos
A todos que tornaram possível a realização desse trabalho e que de alguma forma con-
tribuiram para que ele se concretizasse.
Aos meus familiares, irmãs, cunhados e sobrinhos pela ajuda e desejo de sucesso.
Aos meus orientadores, Professor Liacir dos Santos Lucena e Professor Joaquim Elias
de Freitas, pela confiança e pela segurança passadas durante o período de pesquisa, pela
atenção e entusiasmo, meus mais profundos agradecimentos.
Agradeço também aos colegas e amigos de trabalho, em especial ao Delson Fernando
da Silveira Cursino, pelo incentivo e ajuda essencial à realização desse trabalho.
Meus agradecimentos aos Funcionários do Núcleo de Estudos e Pesquisas em Petróleo
e Gás Natural - NEPGN, pela atenção e prontidão.
À PETROBRAS, meu mais sincero reconhecimento pelo incentivo e oportunidade de
desenvolvimento profissional.
ii
Resumo
No presente estudo foram elaborados algoritmos, utilizando conceitos da teoria da perco-
lação, que analisam as condições de conectividade em modelos geológicos elaborados para
reservatórios de petróleo.
A partir de seus parâmetros petrofísicos, tais como: permeabilidade, porosidade, trans-
missibilidade e outros, gerados por qualquer processo estatístico, é possível conhecer qual
a porção do modelo onde ocorre o maior número de células conectadas, quais são os poços
que estão conectados entre si e qual o caminho mínimo entre injetores e produtores. Per-
mitindo, assim, classificar o reservatório segundo os parâmetros petrofísicos modelados.
Podendo determinar, também, qual a porcentagem do reservatório a que cada poço está
conectado.
De uma forma geral, as regiões conectadas e os respectivos mínimos e/ou máximos da
ocorrência dos parâmetros petrofísicos estudados, constituem uma boa forma de carac-
terizar volumetricamente um reservatório.
Os algoritmos permitem, então, otimizar o posicionamento de locações de poços ofe-
recendo uma visão antecipada das condições gerais da conectividade de um determinado
modelo.
A intenção não é avaliar modelos geológicos, mas mostrar como as jazidas são inter-
pretadas, como suas características petrofísicas se distribuem espacialmente e como as
conexões entre as diversas partes do sistema são resolvidas, mostrando seus caminhos
críticos e “backbones”.
A execução desses algoritmos permite que as características relativas à conectividade
do modelo sejam conhecidas mesmo antes de se iniciar o trabalho de simulação de fluxo
do reservatório.
iii
Abstract
In the present study we elaborated algorithms by using concepts from percolation theory
which analyze the connectivity conditions in geological models of petroleum reservoirs.
From the petrophysical parameters such as permeability, porosity, transmittivity and
others, which may be generated by any statistical process, it is possible to determine the
portion of the model with more connected cells, what the interconnected wells are, and
the critical path between injector and source wells. This allows to classify the reservoir ac-
cording to the modeled petrophysical parameters. This also make it possible to determine
the percentage of the reservoir to which each well is connected.
Generally, the connected regions and the respective minima and/or maxima in the oc-
currence of the petrophysical parameters studied constitute a good manner to characterize
a reservoir volumetrically.
Therefore, the algorithms allow to optimize the positioning of wells, offering a preview
of the general conditions of the given model’s connectivity.
The intent is not to evaluate geological models, but to show how to interpret the
deposits, how their petrophysical characteristics are spatially distributed, and how the
connections between the several parts of the system are resolved, showing their critical
paths and backbones.
The execution of these algorithms allows us to know the properties of the model’s
connectivity before the work on reservoir flux simulation is started.
iv
Índice
1 Introdução 1
1.1 O Que é Percolação? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Percolação x Malhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Expoentes Críticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Modelo de Percolação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 Plano de Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2 Percolação aplicada aos Reservatórios de Petróleo 14
2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Percolação e a Modelagem de Reservatórios . . . . . . . . . . . . . 14
2.3 Simulação de Fluxo e a Teoria da Percolação . . . . . . . . . . . . . 16
2.4 Percolação por Invasão . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.1 Caminho Crítico e “Backbone” . . . . . . . . . . . . . . . . . . . . . 20
3 Análise de Modelos 23
3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.1 Parâmetros dos Modelos . . . . . . . . . . . . . . . . . . . . . . 24
3.1.2 Modelos e Incerteza . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Caminho Crítico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Backbone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4 Aglomerados e Conexão entre Poços . . . . . . . . . . . . . . . . . . 32
3.4.1 Modelos Anisotrópicos . . . . . . . . . . . . . . . . . . . . . . . 32
3.4.2 Modelos Isotrópicos . . . . . . . . . . . . . . . . . . . . . . . . . 35
v
4 Aplicações 37
4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2 Caminho Crítico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3 Backbone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4 Conexão Entre Poços . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5 Conclusões 44
A Malhas Triangulares e Colméia 46
B Gráfico L
ε
(p) log(p) 47
C Rotinas Computacionais 49
vi
Lista de Figuras
1.1 Grade vazia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Malha com p = 10% ocupados. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Malha com p = 20% ocupados. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Malha com p = 50% ocupados. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 Ocupação da malha p=20% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.6 Ocupação da malha p=40% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.7 Ocupação da malha p=50%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.8 Ocupação da malha p=60%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.9 Percolação por ligação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.10 Percolação por invasão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.11 Percolação contínua - sítios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.12 Percolação contínua - fraturas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.13 Alguns tipos de malhas planas . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.14 P (p) em malha quadrada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.15 Gráfico P
× L
ε
(p). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.16 Gráfico de ξ para malha 2D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.17 Zoom do gráfico de ξ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.18 Preenchimento da Malha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.19 Malha quadrada 50% ocupada. . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.20 Percolação em malhas finitas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.21 Valores de p
av
c
- sistema finito. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.22 Variação de p
av
c
com L. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1 Regras de invasão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2 Percolação por invasão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
vii
2.3 Bloqueio de células. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4 Caminho crítico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5 Caminho crítico e “backbone” . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6 “Dangling Branches” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1 Modelos estocásticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Modelo utilizado para cálculo da tendência do caminho crítico. . . . . . . . . . . . . 26
3.3 Probabilidade de ocorrência para o caminho crítico. . . . . . . . . . . . . . . . . . 27
3.4 Configuração de linhas de fluxo em modelo anisotrópico. . . . . . . . . . . . . . . . 28
3.5 Comparação caminho crítico × linhas de fluxo . . . . . . . . . . . . . . . . . . . . 29
3.6 Linhas de fluxo × Caminho Crítico em modelo anisotrópico. . . . . . . . . . . . . . 30
3.7 Variação do backbone com p - modelo 2D. . . . . . . . . . . . . . . . . . . . . . 31
3.8 Variação do backbone com p - modelo 3D. . . . . . . . . . . . . . . . . . . . . . 31
3.9 Modelo anisotrópico 3D 100 × 100 × 5. . . . . . . . . . . . . . . . . . . . . . . . 33
3.10 Distribuição de permeabilidades em modelo anisotrópico 3D. . . . . . . . . . . . . . 33
3.11 Aglomerados em malha 3D anisotrópica. . . . . . . . . . . . . . . . . . . . . . . . 34
3.12 Modelo isotrópico 3D 50 × 50 × 3. . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.13 Distribuição de permeabilidades em modelo anisotrópico 3D. . . . . . . . . . . . . . 36
3.14 Aglomerados em malha 3D isotrópica. . . . . . . . . . . . . . . . . . . . . . . . . 36
4.1 Modelo geológico teórico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2 Distribuição de poços modelo geológico teórico. . . . . . . . . . . . . . . . . . . . . 38
4.3 Caminho crítico em modelo teórico. . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.4 Comparação entre o caminho crítico e linhas de fluxo. . . . . . . . . . . . . . . . . 40
4.5 Sobreposição do caminho crítico e linhas de fluxo. . . . . . . . . . . . . . . . . . . 41
4.6 Backbone em modelo anisotrópico. . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.7 Backbone em modelo teórico - k
lim
= 500mD. . . . . . . . . . . . . . . . . . . . . 42
4.8 Aglomerados do modelo teórico. . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.9 Conexões no modelo teórico para k
lim
= 600mD. . . . . . . . . . . . . . . . . . . . 43
A.1 Exemplo de malhas “dual” - “honeycomb” e triangular. . . . . . . . . . . . . . . . . 46
B.1 Gráfico P
× L
ε
(p). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
viii
C.1 Dados de configuração - Rotina 1. . . . . . . . . . . . . . . . . . . . . . . . . . . 49
C.2 Dados de configuração - Rotina 2. . . . . . . . . . . . . . . . . . . . . . . . . . . 66
ix
Lista de Tabelas
1.1 Limiar de Percolação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Valores de β . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Valores de ν . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Valores de σ e τ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1 Distribuição de Permeabilidades - Modelo anisotrópico. . . . . . . . . . . . 33
3.2 Número de células no maior aglomerado - Modelo anisotrópico. . . . . . . . 35
3.3 Distribuição de Permeabilidades - Modelo isotrópico. . . . . . . . . . . . . 36
3.4 Número de células no maior aglomerado - Modelo anisotrópico. . . . . . . . 36
4.1 Tabela de Poços. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Conexão entre poços e permeabilidades (mD). . . . . . . . . . . . . . . . . 43
x
Nomenclatura
A = área da célula transversal ao fluxo
d = dimensão euclidiana
D
f
= dimensão fractal
E
h
= eficiência de varrido horizontal
E
v
= eficiência de varrido volumétrica
F R = fator de recuperação
k = permeabilidade
k
max
= permeabilidade máxima
k
min
= permeabilidade mínima
k
lim
= permeabilidade limite
L = tamanho da malha
M = massa do aglomerado
n
s
= número de aglomerados
p = probabilidade de ocupação
p
c
= limiar ou limite de percolação
p
c
= limiar ou limite de percolação para sistemas infinito
p
av
c
= limiar ou limite de percolação para sistemas finito
P = probabilidade de conectividade
P
inj
= pressão de injeção
R = resistividade
T = transmissibilidade
z = número de coordenação
Letras gregas:
β = expoente de conectividade
xi
x
= deslocamento na direção x
µ = viscosidade
ν = raio de correlação
ξ = comprimento de correlação
σ = expoente de corte
τ = expoente de Fisher
φ = poro sidade
xii
CAPÍTULO 1
Introdução
1.1 O Que é Percolação?
Percolação é definida na literatura como sendo: “A descrição de sistemas físicos nos quais
um fluido se espalha aleatoriamente através de um meio poroso” [1]; “A teoria que descreve
propriedades relacionadas com a conectividade de grande número de objetos que têm al-
guma extensão espacial cujo inter-relacionamento é relevante e descrito estatisticamente”
[2] ou como “A teoria matemática que trata da conectividade e do transporte em sistemas
geometricamente complexos” [3].
Apresentada por Paul John Flory [4] no estudo de polímeros e tratada no final da
década de 50 por Broadbent e Hammersley [5], a percolação hoje é usada para descrever
processos de transporte no qual a casualidade, ou natureza estatística, está mais associada
com o meio do que com o fluido. É um ramo da teoria da probabilidade que lida com as
propriedades de um sistema aleatório.
Além de sua aplicação no fluxo em meios porosos (engenharia de petróleo) é empregada
no estudo da condução elétrica de rede de resistores, na formação de cadeias poliméricas,
na passagem de corrente elétrica em cristais semicondutores e em outras tantas áreas
como hidrologia, matemática fractal, física de indução magnética e transição de fases.
As idéias básicas da percolação podem ser ilustradas de maneira bem simples.
Se dividirmos uma região do plano com uma “grade” (quadrada p.ex.) teremos uma
junção de subespaços (quadrados no caso) que chamaremos de sítios, e as linhas divisórias
da grade denominaremos de ligações - Fig. 1.1. Um sítio (ou quadrado) nessa configuração
de malha possui quatro vizinhos.
1
Considerando que cada elemento desse sistema de quadrados (ou malha) possa repre-
sentar uma determinada característica do espaço (porosidade (φ), resistividade (R) ou
permeabilidade (k), p.ex.), poderemos marcar os quadrados que possuam valores dentro
de limites pré-determinados dessas propriedades, conforme representado na figura 1.2.
Figura 1.1: Grade vazia Figura 1.2: 10% dos sítios ocupados
Se variarmos os limites daquela propriedade ou característica escolhida, acabará ocor-
rendo a aglutinação de alguns sítios que chamaremos de aglomerado, conforme visto na
figura 1.3.
Para esse tipo de malha considera-se como “aglutinados” os quadrados, ou sítios, que se
tocam pelas faces, não se considerando como em contato aqueles que se toquem apenas
pelos vértices.
Em um determinado momento aparecerá um aglomerado suficientemente grande que
entrará em contato com as faces externas da malha (horizontal e/ou verticalmente). Nesse
momento ocorre a percolação no sistema - Fig. 1.4.
Figura 1.3: 20% ocupado. Figura 1.4: 50% ocupado.
Ou, abordando de outra maneira, se considerarmos os sítios com uma probabilidade
2
p de ocupação da malha, verificamos que conforme essa probabilidade cresce, o número
e o tamanho de aglomerados do sistema aumentam, sendo que para um determinado
valor da probabilidade de ocupação apenas um aglomerado domina. Esse aglomerado é
denominado (aglomerado percolante).
A seqüência de figuras de 1.5 a 1.8 mostra a formação de aglomerados conforme se
aumenta a pprobabilidade de ocupação da malha (100×100 células) - (cores foram usadas
apenas para distinção dos aglomerados).
Na figura 1.8 nota-se um grande aglomerado que está em contato, simultaneamente,
com os quatro lados do sistema (aglomerado percolante).
Figura 1.5: Ocupação da malha p=20% .
Figura 1.6: Ocupação da malha p=40% .
Figura 1.7: Ocupação da malha p=50%.
Figura 1.8: Ocupação da malha p=60%.
Esse particular valor da probabilidade de ocupação, onde um aglomerado se expande e
3
domina grande porção do sistema, denomina-se limiar de percolação ou percolação crítica
(p
c
) - onde p
c
[0, 1]. Esta é a maior fração de sítios ocupados abaixo da qual não ocorre
formação do aglomerado dominante ou percolante. Esse limiar depende do tipo de malha
e da dimensão euclidiana do sistema.
Para resumir, podemos dizer que Percolação é um processo estatístico e sua teoria
estuda a formação, a característica e a distribuição de aglomerados gerados pela agluti-
nação de subdivisões (sítios) em sistemas grandes e complexos, quando estes são ocupados
aleatoriamente e sem correlação .
1.2 Percolação x Malhas
A agora foi considerada apenas a percolação por sítios, também a percolação por
ligação e a percolação contínua. No primeiro caso, a percolação se não pelas faces
dos quadrados ou sítios, mas pela linha que separa seus vértices, conforme mostrado na
figura 1.9. Os vértices “ocupados” se conectam com seus vizinhos, também “ocupados”,
através de uma linha.
Figura 1.9: Percolação por ligação.
Figura 1.10: Percolação por invasão.
Há, ainda, a percolação por invasão que é uma percolação dinâmica onde o processo
imita o deslocamento de um fluido dentro de um meio poroso (Fig. 1.10). No caso da
percolação contínua não existe malha alguma e a percolação se pelos sítios que se
sobrepõem (Figs. 1.11 e 1.12).
Quanto ao tipo de malha, podemos citar como exemplos de malhas ou redes em 2D a
malha triangular e a do tipo colméia (“honeycomb”) (Fig. 1.13 - Vide anexo A).
4
Figura 1.11: Percolação contínua - sítios.
Figura 1.12: Percolação contínua - fraturas.
Em três dimensões podemos ter as malhas cúbica, cúbica centrada (bcc), cúbica centrada
na face (fcc), diamante, entre outras.
(a) Quadrada (b) Triangular (c) Colméia (d) Kagomé (e) Bethe
Figura 1.13: Exemplo de malhas planas.
Inicialmente citamos que em um determinado valor de ocupação - p
c
- ocorre uma
transição na estrutura topológica da rede com a formação do aglomerado percolante.
Esse valor de p
c
é específico e depende da dimensão euclidiana, da forma da malha e de
como a percolação ocorre: se por sítios ou por ligação.
É interessante notar que esse é um fenômeno da mesma natureza que o da mudança
de fase das substâncias ou que o da Temperatura Curie (temperatura em que ocorre a
perda da magnetização de um imã), ou seja, é um fenômeno crítico.
Muitos esforços foram despendidos para obter, matematicamente, o valor preciso do
limite de percolação (p
c
) bem como de outras grandezas decorrentes, tais como: número,
tamanho, perímetro e dimensões fractais dos aglomerados formados. O limite de perco-
lação das redes tridimensionais tem sido calculado através de simulação de Monte Carlo
e outros métodos numéricos.
Para o caso específico da malha do tipo Bethe foi demonstrado por Fisher e Essam [6]
5
que:
p
c
=
1
z 1
(1.1)
Onde z é o número de coordenação da malha, ou seja, o número de ligações conectadas
ao mesmo sítio.
Apenas alguns valores de p
c
foram determinados com precisão. A Tabela 1.1 [7]
apresenta os valores de p
c
para os diversos tipos de malha, incluindo os matematicamente
calculados e os aproximadamente corretos (conseguidos por métodos numéricos).
Tabela 1.1: Limiar de Percolação.
Malha z Sítio Ligação
Colméia 3 0,6962 1 2 sin(π/18)*
=
0, 65271
Quadrada 4 0,592746 0,50000*
Triangular 6 0,50000* 2 sin(π/18)*
=
0, 34729
Diamante 4 0,43 0,388
Cúbica 6 0,3116 0,2488
BCC 8 0,246 0,1803
FCC 12 0,198 0,119
(*) Valores exatos
1.3 Expoentes Críticos
Após a formação do aglomerado de percolação numa malha “infinita”, ou para p > p
c
,
a probabilidade de se ocupar um sítio que pertença ao grande aglomerado percolante
denomina-se Probabilidade de Conectividade ou P
, que varia com (p p
c
) conforme
Relação (1.2):
P
(p)
0 se p < p
c
(p p
c
)
β
se p > p
c
(1.2)
Esta relação é conhecida como uma lei de potência ou lei de escala e β é um expoente
crítico, no caso, expoente de conectividade. Esse expoente tem a característica de não
depender da malha ou do tipo de percolação, dependendo da sua dimensão espacial
(i.e. 2D, 3D, ...) - vide Tabela 1.2 [3].
6
As figuras 1.14 e 1.15 [8] mostram a forma do gráfico P
(p) × p para malhas
quadradas.
Figura 1.14: P
(p) × p para malha quadrada infinita com percolação por sítios.
Figura 1.15: Gráfico P
×L
ε
(p) com ε = 0, 0001 - Compara curva teórica e modelos
com malha quadrada com L = 500, 1000, 2000 e 4000, em 2000 realizações. Retirado
da tese de doutorado de J.E. Freitas [8] - Vide apêndice B
O expoente de conectividade β é apenas um dos muitos expoentes que a teoria da
percolação manuseia. Neste estudo apenas descreveremos aqueles que interessam para o
assunto tratado. A literatura específica deve ser consultada para se ter uma visão mais
aprofundada.
Outra relação que abordaremos aqui é a função correlação ou função correlação entre
dois pontos g(r). Esta função é definida [7] como sendo a probabilidade de um sítio
ocupado, posicionado à uma distância r de outro sítio ocupado, pertencer ao mesmo
7
Tabela 1.2: Valores de β
2D 3D
β 5/36 0,41
aglomerado
1
.
Para baixos valores de p, g(r) apresenta pequenos valores que os tamanhos dos
aglomerados são pequenos.
Para valores de p > p
c
, temos que desconsiderar o aglomerado percolante que ele
domina o sistema e, fazendo isso, g(r) volta a diminuir, uma vez que os aglomerados
restantes vão sendo absorvidos pelo aglomerado dominante.
Para r = 0, obviamente g(r) = 1. No caso de r = 1, sua vizinhança pertencerá ao
mesmo aglomerado se, e somente se, estes sítios vizinhos forem ocupados.
Tomando-se o caso mais simples de uma malha unidimensional (definida em d = 1),
para um sítio ocupado a uma distância r qualquer, g(r) estará definida se todos os sítios
entre (r 1) e a origem (r = 0) também forem ocupados, o que ocorre com probabilidade
p
r
.
Para p < 1, a função correlação, nessa malha unidimensional, tende exponencialmente
para zero se r . A Equação (1.3) mostra essa relação para malhas com dimensão
d = 1 [7].
g(r) = e
r/ξ
(1.3)
onde ξ é o comprimento de correlação.
O valor de ξ diverge no limiar de percolação. As figuras 1.16 e 1.17 mostram detalhes
do gráfico de ξ nas proximidades do limite de percolação p
c
.
O comprimento de correlação obedece a relação 1.4 [7].
ξ(p) ∼| p p
c
|
ν
, (1.4)
onde ν é outro expoente crítico (“raio de correlação” cujos valores, assim como o
expoente de conectividade β, depende apenas da dimensão euclidiana do sistema - vide
Tabela 1.3 [3].
1
Definição não é a mesma da função correlação de variáveis aleatórias.
8
Tabela 1.3: Valores de ν
2D 3D
ν 4/3 0,88
Figura 1.16: Gráfico de ξ para malha 2D.
Figura 1.17: Zoom do gráfico de ξ.
Desses dois expoentes (β e ν) chega-se a D
f
, que é a dimensão fractal do aglome-
rado dominante e que satisfaz à relação 1.5 [7]:
D
f
= d
β
ν
onde d = dimensão euclidiana do sistema. (1.5)
A massa do aglomerado percolante, supondo uma grade na dimensão d e de tamanho
L, obedece a relação [7]:
M(L, ξ)
L
D
f
se L < ξ
ξ
D
f
(L/ξ)
d
se L > ξ
(1.6)
Onde M(L, ξ) é a massa do aglomerado infinito em uma caixa de volume L
d
e D
f
é a
dimensão fractal do aglomerado.
O número médio de aglomerados de tamanho s, ou n
s
(p), satisfaz à relação [7]:
n
s
(p) s
τ
e
(c(p)s)
, (1.7)
sendo:
c(p) ∝| p p
c
|
1
, (1.8)
9
onde σ é o expoente de corte e τ é o expoente de Fisher.
Para p = p
c
o número médio de aglomerados se torna:
n
s
(p
c
) s
τ
. (1.9)
Tabela 1.4: Valores de σ e τ
2D 3D
σ 36/91 0,45
τ 187/91 2,18
Esses expoentes se relacionam da seguinte maneira:
β =
τ 2
σ
(1.10)
1
D
f
= νσ (1.11)
=
τ 1
σ
(1.12)
1.4 Modelo de Percolação
Para adaptar o uso desse modelo admitimos que cada célula receba uma prioridade, que
permitirá, ou não, o fluxo de fluidos através dela. Fazemos isso atribuindo um número
aleatório entre 0 e 1 para cada célula da malha, e esse número será a probabilidade de
ocupação p do sítio - Fig. 1.18.
Se selecionarmos valores da malha menor que 0, 5, p.ex., teremos aproximadamente (esse
é um processo estatístico) 50% das células selecionadas. Com isso, temos condições de
observar como se comporta a formação dos agrupamentos de sítios conforme variamos a
taxa de ocupação da rede - (p).
Caso tivéssemos um sistema com tamanho tendendo ao infinito (L ) teríamos
exatamente 50% dos sítios marcados quando p = 50%. Na figura 1.19 temos p 50%.
Todas as considerações feitas até agora foram para malhas com tamanho tendendo
ao infinito (L ). Na prática trabalhamos com malhas grandes, mas de tamanhos
conhecidos ou finitos. Como saber se as mesmas relações valerão nessa nova escala?
Como descrito por P.R. Nurafza, P.R. King and M. Masihi [9], se tivermos uma
pequena malha 5 × 5 notaremos que a percolação pode ocorrer em valores bem diferentes
do limite de percolação definido pela teoria da percolação para uma malha infinita (p
c
).
A figura 1.20 mostra duas possibilidades de preenchimento dessa malha. Na primeira (a),
apesar de p ser apenas 20%, notamos que ocorreu a conectividade entre duas faces e
10
Figura 1.18: Preenchimento da Malha. Figura 1.19: Malha quadrada 50% ocupada.
na segunda (b), mesmo com p = 80%, a conectividade ainda não ocorreu (considerando,
nesse caso, a conectividade da face esquerda para direita).
Esse fato nos indica que o limite de percolação e a probabilidade de conectividade sejam,
também, função do tamanho do sistema L ou: p
av
c
(L) e P (p, L), respectivamente.
Figura 1.20: Percolação em malhas finitas.
Se elaborarmos um gráfico tal qual o da figura 1.14, agora plotando P (p, L) × p
para um número elevado de realizações de ocupação da malha 5 × 5 encontraremos uma
nuvem de pontos como mostrado na figura 1.21 [9].
Estudos feitos por Stauffer e Aharony (1992-1994) [7] demonstraram as relações entre
os limites de percolação e a probabilidade de percolação para sistemas finitos e infinitos:
p
av
c
p
c
L
1
(1.13)
11
Figura 1.21: Valores de p
av
c
- sistema finito.
Figura 1.22: Variação de p
av
c
com L.
P (p, L) L
β
(1.14)
com um erro δ(L) calculado para p
av
c
obedecendo a relação 1.15
δ(L) L
1
(1.15)
Considerando a média das realizações plotadas no gráfico 1.21 vemos que a curva
obtida é semelhante a da figura 1.14 que “suavizada”. Quanto maior o tamanho do
sistema L (Fig. 1.22) [9] mais a curva “suavizada” se aproxima da curva obtida para um
sistema infinito.
Outra questão importante a ser considerada nesse estudo é sobre a dimensionalidade
dos aglomerados formados no sistema.
Se, numa malha quadrada (2D), contarmos quantos sítios estão ocupados e são perten-
centes ao mesmo aglomerado dentro de uma moldura de tamanho L × L veremos que, ao
aumentarmos o tamanho de L, a quantidade de sítios interconectados cresce linearmente
com a área da moldura, ou L
2
. Se chamarmos de M(L) a quantidade de sítios conectados
dentro dessa moldura, poderemos definir a densidade desses sítios como sendo a relação
M(L)/L
2
. Notamos que essa densidade independe de L e aumenta ou diminui conforme
(p) cresça ou decresça.
No entanto, para valores de p próximos ao limite de percolação p
c
, nota-se que o
aglomerado percolante possui superfície bastante irregular, com ocorrências de buracos
no seu interior, e que M(L) não mais se comporta linearmente em relação a L
2
.
12
Medidas feitas de M(L) nas proximidades de p
c
mostraram que essa grandeza se
relaciona com L conforme a Equação (1.16).
M(L) L
1,896
(1.16)
O expoente dessa equação refere-se a dimensão fractal - (D
f
) 1.9 do aglomerado
(2D). No caso de malha em três dimensões D
f
2, 5.
A dimensão fractal de um aglomerado percolante, assim como os expoentes β e ν,
depende da dimensão euclidiana (d) da malha.
1.5 Plano de Trabalho
Apresentamos, inicialmente, os conceitos básicos da Teoria da Percolação, expoentes críti-
cos e relações. Mostraremos a aplicabilidade dessas grandezas e relações nos assuntos de
reservatório de petróleo. Citaremos alguns trabalhos desenvolvidos empregando esses
conceitos e analisaremos a modelagem de redes adaptadas para a percolação em meios
porosos, com destaque para a percolação por invasão no Capítulo 2.
No Capítulo 3 apresentaremos os resultados obtidos com os algoritmos que foram
desenvolvidos para a análise da conectividade de modelos geológicos. Esses algoritmos
tratarão modelos 3D resultantes de processos geoestatísticos e apresentarão os grandes
aglomerados formados no reservatório modelado, a permeabilidade (k) em que se formam,
quais poços se mantêm conectados, seus caminhos críticos e “backbone”.
No Capítulo 4 serão apresentadas aplicações práticas para dados reais, passando às
conclusões no Capítulo 5.
13
CAPÍTULO 2
Percolação aplicada aos Reservatórios de Petróleo
2.1 Introdução
Os reservatórios de petróleo são rochas porosas ou fraturadas, normalmente sedimenta-
res, cujo processo deposicional e metamorfismos induziram heterogeneidades notadas em
várias escalas. Essas heterogeneidades são, em grande parte, responsáveis pela baixa taxa
de extração do óleo que dificultam o deslocamento do hidrocarboneto através do meio
poroso, deixando grandes quantidades bloqueadas ou seladas dentro da rocha.
Quando, após o início da explotação da jazida, a energia natural do reservatório
1
se
esgota, recorre-se aos métodos de recuperação secundária. A injeção de fluidos é, entre
esses métodos, o mais utilizado. Essa injeção, que pode ser de água ou gás (metano, CO
2
,
etc), serve a dois propósitos: promove o deslocamento do óleo para os poços produtores
e restaura a pressão interna do reservatório.
Toda essa dinâmica é complexa, não linear e de difícil previsibilidade. Simuladores
numéricos são empregados com o objetivo de efetuar previsões de produção e permitir
estudo da economicidade da exploração.
Nesse sentido, a teoria da percolação pode auxiliar no estudo das incertezas e previsões
do comportamento dos fluidos dentro do meio poroso.
2.2 Percolação e a Modelagem de Reservatórios
Supondo que temos que propor a locação de um poço produtor baseado em um modelo
geológico de um determinado reservatório, como saber qual a melhor posição para esse
1
Energia proveniente da expansão de fluidos dentro do reservatório.
14
poço? Se soubermos qual região do modelo apresenta maior número de corpos arenosos
conectados, teremos maiores chances de produzir um maior volume de óleo. Como a
teoria da Percolação pode ajudar nessa tarefa? Basta saber qual é a região do modelo
geológico que apresenta p > p
c
, então teremos mais chances de obter maiores produções de
óleo. A porosidade (φ), ou o “net to gross” - volume do reservatório com óleo, podem ser
utilizados como porcentagens associadas às células exatamente como fizemos no modelo
representado pela figura 1.18.
Supondo que temos um par de poços (produtor × injetor) separados por uma distância
r um do outro, qual a probabilidade desses dois poços estarem no mesmo corpo arenoso?
A função g(r) - “função correlação entre dois pontos”, vista na seção 1.3, responde essa
questão.
Supondo que desejássemos saber qual fração de um reservatório está em contato com
um determinado poço e quais poços estão em contato entre si, isso seria dado pela “função
conectividade” P (p, L) vista no capítulo anterior, seção 1.3.
Como saber se informações obtidas dos poços, normalmente “plugs” ou amostras com
cerca de 5cm de comprimento, podem ser extrapoladas para a totalidade do campo - da
ordem de dezenas de quilômetros? O estudo da dimensão fractal dos aglomerados do
reservatório (lei de escala) pode responder a essa pergunta.
É claro que essa teoria não é de aplicação imediata para todos os casos, é preciso fazer
as adaptações necessárias para cada reservatório.
A teoria da percolação admite que as malhas sejam infinitas e que as características a
elas associadas sejam isotrópicas e aleatórias (sem correlações). A rocha reservatório não
atende integralmente a essas três condições.
Alguns reservatórios podem até ser considerados “infinitos” para efeito de estudo, mas
dificilmente serão isotrópicos e quase sempre apresentam alguma correlação.
Outros fatores a serem considerados são: a forma do reservatório - normalmente muito
pouco espesso em relação a largura e ao comprimento; seu sistema deposicional - normal-
mente em camadas superpostas com grandes barreiras ao fluxo vertical e com grandes
variações de forma/tamanho da malha.
De que maneira esses fatores afetam o limite de percolação do sistema?
Muitos estudos foram realizados [9] a [16] no intuito de quantificar o efeito desses
15
fatores no que preconiza a teoria da percolação.
Em um desses estudos, expressões obtidas para permeabilidade, permeabilidade re-
lativa, resistência elétrica e pressão capilar oriundas de considerações teóricas da perco-
lação, apresentaram boa correlação com resultados experimentais -“An Interpretation of
the Petrophysical Properties of Reservoir” elaborado no início dos anos oitenta, por P.D.
Fleming III [1].
Outro trabalho, elaborado por P.R. King e P.R. Nurafza, utilizou a teoria da percolação
para estimar o fator de recuperação (F R)
2
, o tempo de breakthrough
3
e suas incertezas
em um campo de petróleo do Mar do Norte [23].
M.C. Salomão [14] apresentou na 5
a
Conferência Latino-Americana e Caribenha sobre
Engenharia de Petróleo (1997), uma análise utilizando a teoria da percolação sobre o fluxo
em sistemas espacialmente correlacionados.
A modelagem de reservatórios utilizando a teoria da percolação está intimamente
ligada ao uso dos modelos de rede adaptados para descrever o movimento de fluidos nos
meios porosos.
2.3 Simulação de Fluxo e a Teoria da Percolação
Um problema de simulação de fluxo é dito como resolvido quando é conseguida uma
relação entre as pressões e o campo de velocidade do fluido no interior do meio poroso.
A maneira convencional de se iniciar um estudo de simulação é investigando o impacto
da incerteza geológica no desempenho de um reservatório, quando são elaborados alguns
modelos da jazida (utilizando dados geológicos e geofísicos) e quando se efetuam diver-
sas rodadas de simulação de fluxo com o intuito de ajustar o histórico de produção ao
comportamento do modelo criado.
Esse procedimento é computacionalmente muito caro e demanda grande quantidade
de tempo até que um resultado aceitável seja alcançado. Para isso, a aplicação das leis
universais apresentadas na teoria da percolação, quando aplicada num modelo realístico,
pode ajudar a obter melhores resultados e a reduzir o tempo necessário ao ajuste.
2
Fator de recuperação é a relação entre o volume inicial ‘in place’ (VOIP) da reserva e o total produzido
ao final da explotação do campo.
3
Tempo em que o fluido injetado alcança os poços produtores.
16
O modelo que abordaremos nesse estudo será o da Percolação por Invasão, onde uma
malha é varrida, célula a célula, obedecendo a certas regras de deslocamento.
Para simular a invasão, consideraremos que o fluido deslocante é injetado no sistema
numa taxa constante e de maneira lenta, de modo que a todo momento haja equilíbrio
entre forças capilares e que estas prevaleçam sobre as forças viscosas.
2.4 Percolação por Invasão
A Percolação por invasão foi introduzida em 1983 por Wilkinson and Willemsen [17] como
um modelo para descrever a evolução da frente de avanço entre dois líquidos imiscíveis
dentro de um meio randômico, quando um líquido é deslocado pela injeção de outro. Este
processo ocorre, por exemplo, quando água é injetada dentro de reservatórios de petróleo
para a produção de óleo. Duas variantes desse modelo foram propostas: A primeira,
percolação por invasão sem bloqueio (“NIP” - sigla em inglês de “nontrapping invasion
percolation), é aplicada para líquidos compressíveis onde o líquido invasor penetra pelos
caminhos mais “favoráveis” ao deslocamento da frente; a outra, percolação por invasão
com bloqueio (“TIP” - “trapping invasion percolation), é aplicada para deslocamento de
fluidos incompressíveis onde a invasão de certos sítios é impedida pelas restrições da
incompressibilidade, quando pode ocorrer que o líquido deslocado seja completamente
cercado pelo líquido injetado.
Portanto, a percolação por invasão é um processo dinâmico que imita o deslocamento
de um fluido num meio poroso. Seu movimento está de acordo com observações experi-
mentais e, por ser dinâmico, tem características temporais, ou seja, consiste de uma série
de passos onde em cada passo células vão sendo invadidas obedecendo uma determinada
regra. Essa regra determina a direção e seqüência da invasão. Cada nova célula invadida
abre novas possibilidades para o fluxo.
Para gerar os aglomerados da invasão por percolação NIP devemos executar os
seguintes procedimentos. (i) Inicialmente associam-se números randômicos às células
da malha. Então, (ii) é estabelecido o limite mínimo para invasão (limite de invasão)
- valor abaixo do qual não ocorre a invasão. (iii) É dado o primeiro passo invadindo-se
a(s) célula(s) vizinha(s) à célula inicial cujos valores associados estejam acima do limite
de invasão. (iv) Observa-se quais são as novas opções para invasão a partir dessa nova
17
configuração do aglomerado. Os últimos dois passos (iii) e (iv) são, então, repetidos até
que todas as possibilidades da malha tenham sido contempladas no estabelecimento do
crescimento total do aglomerado da invasão.
A figura 2.1 demonstra como pode ocorrer o processo de invasão numa malha quadrada
2D preenchida com valores aleatórios entre 0 e 1 e com limite de invasão de 0, 30.
(a) 1
o
Passo (b) 2
o
Passo (c) 3
o
Passo
(d) 4
o
Passo (e) 5
o
Passo (f) 6
o
Passo
Figura 2.1: Exemplo de Regras para Percolação por Invasão.
A porosidade da célula, sua permeabilidade ou, para o caso de malhas 3D, sua
transmissibilidade
4
, mesmo sendo parâmetros não aleatórios, podem ser tomados como
parâmetros associados determinantes da seqüência de invasão.
A figura 2.2 apresenta a percolação por invasão numa malha 2D do tipo colméia
(“honeycomb” - z = 3) e numa malha cúbica (z = 6) - nesta última a invasão ocorreu a
partir da face posterior esquerda da figura.
Nesse modelo o “fluido” invasor ocupará as células passíveis de invasão e poderá, no
seu caminho, isolar regiões da área invadida deixando-as desconectadas do aglomerado
maior. Esse fenômeno origem ao fluido bloqueado ou “óleo residual”, que na indústria
do petróleo constitui um problema para o fator de recuperação final (F R) das jazidas.
4
Relação entre a permeabilidade k, área da célula transversal ao fluxo A, viscosidade µ e deslocamento
do fluido x T
x
(
KA
µx
).
18
(a) Percolação por invasão em malha
tipo colméia numa malha 2D.
(b) Percolação por invasão em malha
cúbica.
Figura 2.2: Percolação por invasão.
Essas áreas isoladas ocorrem porque as células localizadas no seu contorno ou
perímetro, obedecendo às regras do deslocamento do fluido, não permitem que os sítios
internos sejam invadidos, deixando-as intactas no interior desses agrupamentos - aglome-
rados brancos vistos nas figuras 2.3 e 1.10.
Figura 2.3: Células não invadidas (aglomerados brancos) numa
malha quadrada L = 200. Notar a natureza fractal do aglomera-
do percolante (células em azul).
O aglomerado invasor (TIP), que representa a área invadida, é um fractal com dimen-
são D
f
= 1, 82 (
5
).
A idéia de bloqueio de um fluido por outro pressupõe que o fluido bloqueado seja
5
Diferentemente do fractal gerado pela invasão tipo NIP que possui dimensão D
f
1, 89 - conforme
foi demonstrado nos trabalhos de Wilkinson and Willemsen [17] e confirmado experimentalmente por
Lenormand and Zarcone em 1985 [24] e Stefan Schwarzer e Shlomo Havlin em 1999 [25]
19
incompressível. Assim, se um aglomerado de células contendo água for rodeado, durante
a drenagem, por células contendo ar fará com que a água fique imóvel que o ar não
poderá empurrá-la.
Isso não acontecerá se o fluido circundado for gás e o circundante for líquido.
2.4.1 Caminho Crítico e “Backbone”
O caminho crítico ou caminho ótimo em um meio desordenado com grande variação
de resistências locais foi analisado inicialmente para aplicações em pesquisas no campo
de condutividade elétrica em cristais semicondutores (Ambegaokar et al. (1971); Pollak
(1972); Friedman and Pollak (1981)).
Para aplicações em reservatórios de petróleo, o caminho crítico é a trajetória que oferece
a menor resistência (maior condutividade hidráulica ou permeabilidade k) para o fluxo
dentro do meio poroso.
O caminho crítico, assim como o limite de percolação p
c
, depende do tipo de malha
aplicada ao sistema.
O tamanho do aglomerado percolante tende ao infinito quando a ocupação de uma
malha infinita se aproxima do limiar de percolação p
c
. O mesmo comportamento é no-
tado no comprimento de correlação ξ(p) (seção 1.3). Como conseqüência, é possível
estabelecer um procedimento de otimização da trajetória de menor resistência apenas na
vizinhança superior do limite da percolação. A figura 2.4 apresenta essa trajetória em
dois tipos de malha.
O caminho mais provável para que o fluxo ocorra dentro do meio poroso é o “backbone”
ou “espinha dorsal” (Fig. 2.5).
O que é retirado do sistema, ou seja, as células passíveis de invasão que não pertencem
ao “backbone” chama-se “ramos pendentes” (“dangling branches”) ou, também, “caminhos
sem saída” (“dead ends”).
Os “dangling branches” são células que apesar de estarem conectadas entre si se ligam
ao “backbone” apenas em um ponto, não participando do fluxo do injetor ao produtor.
Portanto, não contribuem para a “expulsão de fluidos” (ou produção) ocasionada pela
invasão. Detalhe na figura 2.6.
O conceito de “backbone” se assemelha ao de linhas de fluxo. Não sendo exatamente
20
(a) Caminho crítico em malha quadrada
- L = 100 e p > p
c
. O poço injetor foi
localizado no centro da figura e o produtor
na extremidade superior esquerda.
(b) Caminho crítico em malha tipo “honey-
comb” - L = 50 e p > p
c
. O poço injetor
foi localizado no lado inferior da figura e o
produtor no superior.
Figura 2.4: Caminho crítico.
(a) Caminho crítico (células verdes),“backbone”
(células amerelas) e aglomerado percolante (célu-
las azuis).
(b) Detalhe do “Backbone” entre
poços produtor × injetor.
Figura 2.5: (a) Caminho crítico e “backbone” em malha quadrada - L = 100 e p > p
c
.
21
(a) “Dangling Branches” (b) Detalhe
Figura 2.6: (a) “Dangling Branches” (b) Detalhe do único ponto de contato com o “backbone”.
a mesma coisa, idéia da área ou volume que está envolvido no fluxo entre dois pontos
do reservatório dentro de um modelo geológico.
22
CAPÍTULO 3
Análise de Modelos
3.1 Introdução
Os modelos geológicos são obtidos mediante a aplicação de algum processo estatístico que
“atende” as informações obtidas em alguns pontos dentro do reservatório. Esses pontos são
os dados conseguidos ou pela perfuração de poços, ou através das informações oriundas
dos levantamentos sísmicos. Esse processo, ou modelagem estocástica, estabelece valores
aos espaços onde não informações disponíveis. Consiste na geração de distribuições
equiprováveis de parâmetros que preservam determinados pontos de observação.
De qualquer maneira, o que é determinado para o espaço entre os pontos conhecidos
é apenas uma estimação ou uma avaliação indireta de um parâmetro, onde para cada
realização do modelo são gerados valores distintos.
Portanto, todo o processo convencional envolve um elevado grau de incerteza sobre
a distribuição espacial das heterogeneidades que influenciam o fluxo. Essa incerteza é
mais acentuada no início da exploração da jazida que as informações pontuais não
são abundantes o suficiente para confirmar as extrapolações estatísticas. Nesse sentido, a
teoria da percolação, sendo também um processo estatístico, possibilita a criação e análise
de muitos modelos em tempo muito curto, com baixíssimo esforço computacional.
Nesses modelos o volume poroso da acumulação é subdividido em células aonde são
distribuídos os valores das características petrofísicas encontrados através dos métodos
estatísticos. O resultado desse processo, o modelo geológico em sí, serve de entrada para
a simulação numérica de fluxo.
A grade utilizada nessa modelagem (chamada de “grid fino”) normalmente possui uma
23
quantidade de células maior que o “grid” do modelo utilizado no estudo de fluxo de fluidos.
Como existem limitações na capacidade de processamento da simulação numérica de
fluxo
1
, necessidade de se proceder a renormalização ou redução do número de células
e, conseqüentemente, um re-escalonamento, ou “upscale”, das propriedades associadas às
células do modelo geológico. Essas alterações podem resultar em grandes diferenças no
comportamento do reservatório no que diz respeito ao fluxo de fluidos.
Com o objetivo de conhecer em quais áreas desse “grid grosso” (após “upscale”) ocorrem
os aglomerados mais volumosos, ou qual a permeabilidade mínima desses aglomerados, ou
quais poços estão conectados entre si e quais estão conectados aos grandes aglomerados
do modelo ou, ainda, para saber quais as transmissibilidades de suas conexões, caminhos
críticos e “backbones” é que foram desenvolvidos os algoritmos que aqui serão utilizados.
Não se trata de rotinas para simular o fluxo no meio poroso, mas de ferramentas
que auxiliam a entender como o modelo geológico está definindo a conectividade de suas
células.
Dessa maneira, poderemos obter informações importantes para a predição do fluxo de
fluidos mesmo antes da primeira “rodada” no simulador.
O modelo de percolação por invasão possibilita obter considerável conhecimento cen-
trando atenção no crescimento dos aglomerados cuja formação obedece a expoentes aná-
logos àqueles conseguidos em fenômenos críticos.
3.1.1 Parâmetros dos Modelos
Os modelos analisados nesse estudo, quando planos (2D), foram preenchidos (ou popu-
lados), com o valor da permeabilidade das células, para os modelos 3D utilizamos a
transmissibilidade (vide seção 2.4) por melhor representar a condutividade hidráulica do
meio onde acontece o fluxo.
Admitimos que as células nos modelos 3D possuem forma aproximada de um poliedro
regular e, para o deslocamento dos fluidos, que as forças capilares predominam sobre as
viscosas.
Quando foi necessário, utilizamos o valor da viscosidade (µ) igual a 1.
Todas as rotinas foram escritas em Visual Basic
R
para planilha Microsoft EXCEL
R
.
1
Cada célula deverá ter suas saturações (óleo, água e gás) e pressões obtidas através da solução de um
sistema de equações cujo tamanho depende do tamanho do modelo.
24
3.1.2 Modelos e Incerteza
Para áreas que possuam pouca ou nenhuma informação disponível, mesmo métodos sofisti-
cados utilizados na geração de modelos incorporam grande incerteza aos valores gerados.
Numa malha quadrada de 100 × 100 × 10 e utilizando informações de trechos de
perfis de três poços localizados nos vértices de um triângulo, conforme figura 3.1(a),
elaboramos dez diferentes modelos empregando distribuição Gaussiana para estimação
das permeabilidades das células.
Dos dez modelos gerados selecionamos os resultados do primeiro, quinto e décimo cujas
quinta camadas são apresentadas nas figuras 3.1(b-d).
Podemos observar a grande variação na distribuição areal das permeabilidades. O que
idéia do grau de incerteza envolvido.
(a) Grid e localização dos poços (b) Modelo 1
(c) Modelo 5 (d) Modelo 10
Figura 3.1: Malha e quinta camada de modelos 100 × 100 × 10 com permeabilidades geradas por dis-
tribuição gaussiana a partir de dados de perfis de poços com a aplicação de variograma exponencial e
orientação de anisotropia. Células em verde representam as maiores permeabilidades.
25
3.2 Caminho Crítico
Nessas condições (áreas com poucos dados observados) e utilizando modelos de percolação
por invasão com distribuição aleatória de permeabilidades, podemos quantificar com rapi-
dez o grau de incerteza envolvido.
Tomando como exemplo a estimativa do tamanho do caminho crítico numa malha de
100 × 100, escolhemos cenários onde fixamos as permeabilidades máxima (k
max
), mínima
(k
min
) e variamos apenas a permeabilidade limite (k
lim
).
A permeabilidade limite é o valor da permeabilidade abaixo da qual não ocorre perco-
lação na célula. Um baixo valor de k
lim
equivale a uma alta pressão de injeção. Portanto,
estabelecer uma permeabilidade limite no sistema se equipara a estabelecer um valor para
a pressão de injeção no poço injetor.
Calculamos probabilisticamente a tendência do tamanho do caminho crítico entre dois
poços localizados conforme apresentado na figura 3.2 - P 1 = produtor e P 2 = injetor,
e obtivemos as curvas mostradas na figura 3.3 após 1500 realizações para k
max
= 300,
k
min
= 80 e k
lim
assumindo valores de 130mD a 175mD.
Observando o caso específico de k
lim
= 160mD, chegamos a uma probabilidade de
90% (P 90) de ocorrer um caminho crítico com o comprimento de aproximadamente 160
células ou maior; 50% (P 50) de chances para ocorrer um comprimento de 175 células e
10% (P 10) de probabilidade de o caminho crítico ter um comprimento com 205 células
ou mais.
Figura 3.2: Modelo utilizado para cálculo da tendência do caminho crítico entre um
injetor(P2) e um produtor(P1) - Malha 100 × 100.
26
Interessante notar que o tamanho do caminho crítico apresentou tendência de cresci-
mento com o aumento da permeabilidade limite até esta atingir o valor de 169mD.
Para valores de k
lim
maiores que 169mD o tamanho do caminho crítico diminuiu,
deixando de ocorrer ligação entre injetor e produtor para k
lim
= 180mD. Isso sugere que
próximo a esse ponto o sistema atingiu o limiar de percolação p
c
- conforme figura 3.3(b).
(a) k
lim
= 130mD a 165mD (b) k
lim
= 169mD a 175mD
Figura 3.3: Probabilidade de ocorrência para o caminho crítico numa malha 100 × 100, k
max
= 300mD,
k
min
= 80mD e k
lim
variável após 1500 realizações.
Para toda a faixa de variação de k
lim
obtivemos: P 10 = 208 células; P50 = 170 células
e P 90 = 156 células.
É importante perceber que, dado um par de poços produtor × injetor, quanto menor
o caminho crítico entre eles menor será o tempo de breakthrough e menor será a eficiência
de varrido da injeção (no caso, eficiência de varrido horizontal)
2
.
Levando esse mesmo tratamento para casos mais realísticos, efetuamos simulações
em modelos obtidos a partir de perfis de poços com limites de permeabilidade máximo
e mínimo de 300mD e 80 mD, respectivamente - Fig. 3.4(a). Variamos a pressão de
injeção, à semelhança do que foi feito com a permeabilidade limite nos modelos aleatórios,
obtendo as configurações de linhas de fluxo apresentadas nas figuras 3.4(b-d)
3
- Para isso,
utilizamos o Simulador IMEX da CMG - versão 2007.10.
A figura 3.4(e) mostra a sobreposição das linhas de fluxo calculadas para as diversas
2
Eficiência de varrido horizontal, E
h
, é a relação entre a área invadida pelo fluido injetado e a área
total do meio poroso, ambas medidas em planta.
3
Assumindo que as linhas de fluxo agem como uma envoltória para as possibilidades do caminho
crítico.
27
(a) Modelo anisotrópico. Permeabilidades geradas a partir de da-
dos de poços. Células em vermelho representam maiores permeabil-
idades
(b) 30kgf/cm
2
. (c) 60kgf/cm
2
. (d) 90kgf/cm
2
. (e) Sobreposição.
Figura 3.4: Linhas de fluxo (geradas no Simulador IMEX da CMG - versão 2007.10) obtidas em modelos
anisotrópicos - malha de 100 × 100, com variação da pressão de injeção - P
inj
.
28
pressões de injeção aplicadas no poço injetor. É importante salientar, ainda, que quanto
maior a pressão de injeção, menores e mais concentradas serão as linhas de fluxo,
que células com permeabilidades mais baixas serão invadidas quando aplicadas maiores
pressões. Permitindo, assim, um caminho mais direto para o fluxo entre o poço produtor
e o injetor.
As linhas de fluxo encontradas para esses novos modelos tiveram comprimentos má-
ximo de 175 células e mínimo de 105 células, portanto, não muito distantes das faixas
encontradas nos modelos aleatórios.
A figura 3.5 demonstra, através de sobreposição, como os caminhos críticos obtidos com
aplicação do algoritmo estão de acordo com as linhas de fluxo encontradas em simulação
através do simulador IMEX da CMG.
(a) Configuração ‘five-spot’ (b) Par produtor × injetor
Figura 3.5: Caminho crítico e linhas de fluxo obtidos em modelos isotrópicos 100 × 100. As linhas
vermelhas finas são as linhas de fluxo obtidas no simulador CMG, os caminhos críticos estão representados
pelas células verdes, os “backbones” pelas células amarelas e os aglomerados percolantes estão representados
pelas células azuis.
Mesmo em modelo anisotrópico notamos que o caminho crítico encontrado permanece
dentro a ‘envoltória’ das linhas de fluxo geradas pelo simulador - conforme sobreposição
vista na figura 3.6
29
Figura 3.6: Linhas de fluxo × Caminho Crítico em modelo ‘five-
spot’ anisotrópico. Notar que o poço P2 (canto inferior direito) não
sofre influência da injeção - está “desconectado” do aglomerado per-
colante.
3.3 Backbone
Ainda considerando modelos gerados através de poucas amostras de campo ou de jazidas
na fase inicial de explotação, vamos fazer considerações sobre o backbone.
O conceito de backbone nos remete à eficiência de varrido (E
h/v
) do modelo geológico.
Como as células que pertencem ao backbone são as que realmente participam do fluxo entre
um par de poços produtor × injetor, conhecer o backbone de um modelo nos idéia da
área que pode ser afetada pelo fluido injetado. Dependendo da vazão e da pressão de
injeção, teremos uma maior ou menor eficiência de varrido (E
h/v
), sendo o backbone o
que determina a área máxima (ou volume máximo no caso de modelos 3D) envolvida no
deslocamento de fluidos. Temos que considerar que, para modelos 3D, o parâmetro que
determina a possibilidade de invasão ou não de uma célula passa a ser a transmissibilidade
(T
x
= (
kA
µx
))em vez da permeabilidade. As figuras 3.7 e 3.8 mostram o backbone gerado
para alguns modelos aleatórios 2D e 3D, com detalhe para o caminho crítico.
Notamos que para uma ocupação da malha próxima ao p
c
obtemos backbones mais
delgados, numa ocupação muito superior a p
c
, ou p p
c
, teremos backbones mais
robustos, o que promove uma melhor eficiência de varrido no modelo.
Da mesma maneira que procedemos para o cálculo do caminho crítico, podemos
30
(a) Backbone e caminho crítico, k
max
=
300mD, k
min
= 80mD e k
lim
= 169mD.
E
h
máxima = 17, 56%.
(b) Backbone e caminho crítico, k
max
=
300mD, k
min
= 80mD e k
lim
= 160mD.
E
h
máxima = 31, 64%.
Figura 3.7: Variação da Eficiência de Varrido Horizontal E
h
para uma determinada taxa de ocupação
p do sistema - modelo 2D - 50 × 50. P 3 é o poço injetor e P 2 é o poço produtor - (a) k
lim
= 169mD e
(b) k
lim
= 160mD.
(a) Backbone e caminho crítico, k
max
= 300mD,
k
min
= 80mD e k
lim
= 200mD. E
v
máxima =
8, 68%.
(b) Backbone e caminho crítico, k
max
= 300mD,
k
min
= 80mD e k
lim
= 195mD. E
v
máxima =
30, 84%.
Figura 3.8: Variação da Eficiência de Varrido Vertical (E
v
) para uma determinada taxa de ocupação p
do sistema - modelo 3D - 50 × 50 × 3. P 3 é o poço injetor e P 2 é o poço produtor - (a) k
lim
= 200mD e
(b) k
lim
= 195mD.
31
pesquisar a tendência do backbone de um modelo geológico variando k
max
, k
min
e k
lim
.
Para o caso de modelos determinísticos, ou gerados por processos que incluem corre-
lação entre células, teremos a ocorrência de backbones maciços que ocupam quase todo o
espaço poroso do sistema.
3.4 Aglomerados e Conexão entre Poços
O volume de células que um modelo geológico diz pertencerem a um mesmo aglomerado
influencia na explotação da jazida determinando a posição a a quantidade de poços que
devem ser perfurados para a maximização da extração do óleo. Um sistema com pequenos
aglomerados conduz à perfuração de um maior número de poços, podendo levar a baixos
fatores finais de recuperação (F R).
Outro aspecto significativo de como um modelo ‘resolve’ as conexões entre os diversos
pontos do sistema poroso está no posicionamento de poços injetores. Avaliar a conexão
entre as diversas áreas do modelo indica quais as melhores locações para se produzir uma
melhor recuperação secundária através da injeção de fluidos.
Em suma, o conhecimento da formação dos aglomerados do sistema, seu número e
tamanho, permite inferir a fração do reservatório que mantém os poços conectados (prin-
cipalmente injetores e produtores) e também noção de qual porção do reservatório se
localiza o maior volume de células pertencentes ao mesmo aglomerado. Para avaliar como
um modelo promove a conexão entre poços e em que ‘nível’ de permeabilidade (transmis-
sibilidade em modelos 3D) isso acontece, empregamos rotina que analisa, para diversas
faixas de permeabilidade ou transmissibilidade, quando ocorre conexão entre os poços do
modelo.
3.4.1 Modelos Anisotrópicos
Tomando como exemplo modelo criado conforme processos convencionais (Fig. 3.9), ana-
lisamos como suas permeabilidades foram distribuídas e o como estão posicionados seus
aglomerados - tabela 3.1 e figura 3.10.
Estabelecendo valores decrescentes para o k
lim
, a partir de k
max
= 600mD até zero,
pesquisamos o tamanho e posicionamento dos aglomerados - Fig. 3.11 e tabela 3.2. Nota-
32
Figura 3.9: Modelo anisotrópico 3D 100 × 100 × 5. Células em verde
representam maiores permeabilidades.
Tabela 3.1: Distribuição de Permeabilidades - Modelo anisotrópico.
Faixa de k(mD) n
o
células % % acumulada
600 8339 16,7 16,7
500 a 600 5646 11,3 28,0
400 a 500 4119 8,2 36,2
300 a 400 3359 6,7 42,9
200 a 300 2674 5,3 48,3
100 a 200 2381 4,8 53,0
0 a 100 23482 47,0 100,0
Figura 3.10: Distribuição de permeabilidades em modelo anisotrópico 3D
100 × 100 × 3.
33
se que os aglomerados obedecem a orientação da anisotropia imposta na formação do
modelo e que conforme o valor do k
lim
diminui, aumenta o tamanho do maior aglomerado
gerado.
Percebe-se que a área superior das camadas representadas na figura 3.11 apresenta
baixa concentração de aglomerados para k
lim
= 600mD, sendo desaconselhável o posi-
cionamento de poços naquela região. O algoritmo indicou que o poço injetor P 3 se
conectará com o poço produtor P 2 quando o k
lim
for igual a 200mD e com o outro pro-
dutor P 3 quando k
lim
for menor do que 100mD o que pode requerer, para o caso desse
último par de poços (P 2 × P 3), uma pressão de injeção muito elevada.
(a) Camada 1. (b) Camada 2.
(c) Camada 3. (d) Camada 4.
(e) Camada 5.
Figura 3.11: Aglomerados formados para k
lim
= 600mD em modelo anisotrópico - malha de 100×100×5.
34
Tabela 3.2: Número de células no maior aglomerado - Modelo anisotrópico.
k
lim
(mD) n
o
células % do sistema
600 3822 7,6
500 8949 17,9
400 15397 30,8
300 19080 38,2
200 22020 44,0
100 24832 49,7
0 50000 100,0
3.4.2 Modelos Isotrópicos
Para o caso de modelos isotrópicos - figura 3.12, notamos que a distribuição de perme-
abilidade e de aglomerados, como era de se esperar, são bem distribuídos dentro do meio
poroso. Não havendo direção preferencial para suas ocorrências.
Figura 3.12: Primeira camada de modelo isotrópico 3D 50 × 50 × 3.
Células azuis e verdes representam as permeabilidades baixas.
Usando o mesmo procedimento utilizado para o modelo anisotrópico, agora com
k
lim
variando de k
max
= 300mD até zero, obtivemos a distribuição de permeabilidades
mostrada na figura 3.14.
A tabela 3.4 mostra a distribuição dos maiores aglomerados para diversos k
lim
.
35
Tabela 3.3: Distribuição de Permeabilidades - Modelo isotrópico.
Faixa de k(mD) n
o
células % % acumulada
299 23 0,30 0,3
250 a 299 1256 16,7 17,1
200 a 250 1274 17,0 34,0
150 a 200 1240 16,5 50,6
100 a 150 1298 17,3 67,9
50 a 100 1174 15,7 83,5
0 a 50 1235 16,5 100,0
Figura 3.13: Distribuição de permeabilidades em modelo
anisotrópico 3D 100 × 100 × 3.
(a) Camada 1. (b) Camada 2. (c) Camada 3.
Figura 3.14: Aglomerados formados para k
lim
= 300mD em modelo isotrópico - malha de 50 × 50 × 3.
Tabela 3.4: Número de células no maior aglomerado - Modelo anisotrópico.
k
lim
(mD) n
o
células % do sistema
299 1 0,01
250 13 17,9
200 1154 30,8
150 3488 38,2
100 5070 44,0
50 6263 49,7
0 7500 100,0
36
CAPÍTULO 4
Aplicações
4.1 Introdução
Para podermos avaliar a aplicabilidade das rotinas desenvolvidas em casos reais construí-
mos um modelo geológico sintético, baseado em dados reais de três poços, utilizando as
técnicas convencionais de distribuição de propriedades
1
. O modelo foi gerado numa grade
33 × 31 × 5, totalizando 5115 blocos e configurou-se conforme mostrado nas figuras 4.1 e
4.2.
Figura 4.1: Representação em 3D do topo do modelo geológico - malha 33 × 31 × 5, com distribuição de
propriedades gerada por simulação gaussiana seqüencial.
1
Simulação Gaussiana Seqüencial - Método estocástico de interpolação baseado na interpolação Krig-
ing com aplicação de variograma para descrever as variações espaciais das propriedades.
37
Figura 4.2: Distribuição de poços no modelo geológico teórico.
Cada célula foi criada com 150m × 150m em cinco camadas de espessura constante
de 1m. O valor da permeabilidade distribuída entre as células variou de 2800mD a
0mD. Além dos poços utilizados para a confecção do modelo foram posicionados mais
33 poços, totalizando 36 poços (29 produtores e 7 injetores), para explotação da jazida -
tabela 4.1. Os sete poços injetores (P0008, P0026, P0027, P0034, P0035, P0036 e P0037)
foram colocados na periferia da acumulação com a intenção de deslocar o óleo para os
produtores posicionados na região central.
As propriedades de rocha e fluido (permeabilidade, porosidade, compressibilidade da
rocha, temperatura, tabela PVT dos fluidos, curvas de permeabilidade relativa, etc.)
foram introduzidas no simulador da CMG(IMEX - v.2007-10 ) e efetuado processamento
do sistema para um período de 15 anos. Dos resultados do simulador obtivemos as linhas
de fluxo que foram utilizadas para comparação com os caminhos críticos conseguidos pelas
técnicas da percolação por invasão.
38
Tabela 4.1: Tabela de Poços.
Poço Posição (x, y) Classificação Poço Posição (x, y) Classificação
P0001 32 , 16 Produtor P0020 10 , 17 Produtor
P0002 23 , 25 Produtor P0021 10 , 11 Produtor
P0003 14 , 12 Produtor P0022 17 , 12 Produtor
P0004 8 , 8 Produtor P0023 22 , 15 Produtor
P0005 19 , 10 Produtor P0024 25 , 22 Produtor
P0006 14 , 6 Produtor P0025 19 , 24 Produtor
P0007 8 , 14 Produtor P0026 16 , 23 Injetor
P0008 17 , 27 Injetor P0027 6 , 17 Injetor
P0009 13 , 22 Produtor P0028 4 , 14 Produtor
P0010 7 , 20 Produtor P0029 6 , 11 Produtor
P0011 2 , 10 Produtor P0030 12 , 9 Produtor
P0012 2 , 16 Produtor P0031 16 , 9 Produtor
P0014 12 , 14 Produtor P0032 21 , 12 Produtor
P0015 15 , 15 Produtor P0033 28 , 19 Produtor
P0016 17 , 17 Produtor P0034 4 , 8 Injetor
P0017 20 , 18 Produtor P0035 31 , 25 Injetor
P0018 22 , 21 Produtor P0036 10 , 6 Injetor
P0019 15 , 20 Produtor P0037 25 , 12 Injetor
4.2 Caminho Crítico
Através das técnicas da percolação por invasão encontramos os caminhos críticos dos prin-
cipais pares produtor × injetor do modelo criado - conforme exemplificado na figura 4.3.
(a) P36×P21. (b) P8×P15. (c) P34×P22. (d) P27×P22.
Figura 4.3: Caminho Crítico entre poços injetores e produtores em modelo teórico..
Tomamos as principais linhas de fluxo geradas pelo simulador e comparamos com
os caminhos críticos encontrados acima, notamos boa coerência entre os dois trajetos -
Figs. 4.4 e 4.5.
39
(a) Linhas de Fluxo. (b) Caminho Crítico.
(c) Sobreposição do Caminho Crítico e linhas de fluxo.
Figura 4.4: Comparação entre o caminho crítico gerado pela percolação por invasão e linhas de fluxo
geradas no simulador de fluxo IMEX para o par injetor×produtor - P35×P15 - modelo teórico.
40
Figura 4.5: Sobreposição do caminho crítico gerado pelas cnicas da percolação por invasão e das linhas
de fluxo geradas no simulador de fluxo IMEX para o par injetor×produtor - P35×P15 - modelo teórico.
4.3 Backbone
Como o sistema é anisotrópico o backbone gerado para baixos valores de k
lim
se apresentou
robusto ocupando quase todas as células da malha - Fig. 4.6.
Para k
lim
= 500mD obtivemos os agrupamentos representados na figura 4.7.
Figura 4.6: Backbone gerado para o par de poços P 37(injetor) × P 16(produtor)
em modelo anisotrópico para k
lim
= 200mD.
para valores mais altos de k
lim
foram observados backbones mais restritos ocupando
apenas células da vizinhança dos pares de poços injetores×produtores - Fig. 4.7
Como o k
lim
está relacionado com a pressão de injeção, o conhecimento do backbone
de um par injetor×produtor, formado para um determinado k
lim
, nos idéia de qual
área será envolvida no deslocamento de fluidos na injeção para esse par de poços.
41
(a) P34×P22. (b) P27×P22×P34. (c) P34×P12.
Figura 4.7: Backbone para pares de injetor×produtor em modelo teórico para k
lim
= 500mD.
4.4 Conexão Entre Poços
Através do conhecimento de como e onde os aglomerados do modelo se formam é possível
estimar o valor da permeabilidade que ocorre entre os poços e como os vários pontos
do sistema se conectam. Podendo-se determinar, também, se poços desconectados dos
injetores ou não pertencentes aos grandes blocos do reservatório. A conexão entre os poços
foi obtida observando-se a formação dos aglomerados conforme variamos a permeabilidade
limite. A figura 4.8 mostra os aglomerados formados para dois valores de k
lim
.
Notamos que quando k
lim
= 800mD apenas os poços P 36 e P 4 estão conectados e quando
k
lim
= 600mD os poços P 04 × P 36; P 11 × P 34 e P 22 × P 31 ficaram conectados dois a
dois em aglomerados distintos.
(a) k
lim
= 800mD (b) k
lim
= 600mD
Figura 4.8: Aglomerados do modelo teórico para k
lim
= 800mD e 600mD.
A tabela 4.9 mostra quais aglomerados os poços atravessam quando k
lim
= 600mD.
Nessa tabela podemos verificar que os poços P36 e P 4 se conectam através do aglomerado
42
número 9; os poços P 11 e P 34 estão conectados pelo aglomerado 32 e que o P 22 pertence
ao mesmo aglomerado (148) do poço P 31.
Figura 4.9: Conexões no modelo teórico para k
lim
= 600mD.
A tabela 4.2 mostra as permeabilidades máximas em que parte dos poços do modelo
estão conectados.
O poço P0002 se conecta com o P0008 quando o k
lim
= 200mD; o poço P0004 se conecta
com o P0010 quando k
lim
= 500mD.
Tabela 4.2: Conexão entre poços e permeabilidades (mD).
P0001 k
lim
P0002 k
lim
P0003 k
lim
P0004 k
lim
P0005 k
lim
P0002 300 P0001 300 P0001 300 P0001 200 P0001 200
P0003 300 P0003 300 P0002 300 P0002 300 P0002 200
P0004 300 P0004 300 P0004 300 P0003 300 P0003 200
P0005 200 P0005 200 P0005 200 P0005 200 P0004 200
P0006 200 P0006 200 P0006 200 P0006 200 P0006 200
P0007 200 P0007 200 P0007 200 P0007 200 P0007 200
P0008 200 P0008 200 P0008 200 P0008 200 P0008 200
P0009 300 P0009 300 P0009 300 P0009 400 P0009 200
P0010 300 P0010 300 P0010 300 P0010 500 P0010 200
P0011 300 P0011 300 P0011 300 P0011 500 P0011 200
P0012 300 P0012 300 P0012 300 P0012 500 P0012 200
P0014 300 P0014 300 P0014 300 P0014 500 P0014 200
P0015 300 P0015 300 P0015 300 P0015 500 P0015 200
P0016 300 P0016 300 P0016 300 P0016 300 P0016 200
P0017 300 P0017 300 P0017 300 P0017 300 P0017 200
P0018 200 P0018 200 P0018 200 P0018 200 P0018 200
43
CAPÍTULO 5
Conclusões
Empregamos as técnicas da Teoria da Percolação, especificamente a Percolação por In-
vasão, em modelos geológicos gerados a partir de poucos pontos conhecidos e obtivemos
resultados satisfatórios na predição do comportamento do fluxo.
Comparando-se o esforço empregado na confecção de um modelo para uso em simu-
ladores de fluxo e considerando o tempo despendido e a incerteza envolvida, notadamente
quando não se possui dados suficientes para uma boa estimação, a percolação por invasão
apresenta-se como boa opção para se obter modelo inicial do comportamento do fluxo em
uma acumulação.
Através dos caminhos críticos podemos verificar qual será a direção preferencial do fluido
injetado e quais poços serão afetados pela injeção. Efetuamos comparação entre os cami-
nhos críticos obtidos através da percolação por invasão e as linhas de fluxo conseguidas
pela simulação do modelo no simulador da CMG (IMEX) e notamos boa coerência nas
trajetórias encontradas.
O backbone encontrado, observado o nível de permeabilidade que conecta os poços do
sistema, idéia da eficiência de varrido do modelo e, qualitativamente, noção da
pressão de injeção necessária. A conexão dos poços com o reservatório pode ser observada
conforme se conhece a formação dos aglomerados, o que possibilita uma melhor localiza-
ção de produtores e injetores, maximizando a explotação da jazida com o menor número
de poços possíveis. Além de permitir conhecer a porcentagem do reservatório que está
“em contato” com os poços.
Permite conhecer, antes de se empregar qualquer esforço para a confecção do modelo
numérico de fluxo, se poços “desconectados” e qual a distribuição areal das propriedades
44
do modelo geológico.
O modo como elaboramos as rotinas, todas escritas em Visual Basic
R
para aplicativos,
demonstra o baixo esforço computacional requerido para desenvolve-las.
45
Anexo A
Malhas Triangulares e Colméia
Uma malha definida como na figura A.1-(a) será triangular (z = 6) quando seus sítios
forem formados pelas intersecções das linhas pretas e será do tipo colméia ou “honeycomb”
(z = 3) quando os sítios forem formados pelas intersecções das linhas azuis.
(a) Definição de malha tipo “honey-
comb” e triangular.
(b) Malhas “dual” - “honeycomb” e
triangular.
Figura A.1: Exemplo de malhas “dual”.
Numa malha por sítios, o que define o seu tipo é a configuração obtida com a ligação
de seus centros. Na malha quadrada esse aspecto é indiferente uma vez que a junção dos
centros de seus sítios também resulta numa malha do tipo quadrada. O que não ocorre
com as malhas do tipo colméia e triangular.
A malha definida na figura A.1-(b), apesar de ser constituída pela junção de sítios em
forma de hexágonos, funciona como uma malha triangular com z = 6 e p
c
= 0, 500.
A malha triangular é a dual da malha “honeycomb” e vice-versa.
46
Anexo B
Gráfico L
ε
(p) log(p)
Para representar as leis de potência no intervalo próximo ao limite de percolação p
c
foi
eleborado por J.E.Freitas [8], na sua tese de doutorado, um gráfico que utiliza as pro-
priedades do logaritmo em cada lado da divergência (quando p p
c
).
Esse gráfico enfatiza o comportamento da grandeza nas proximidades de um ponto crítico
quando as relações se tornam válidas apenas para p < p
c
ε ou p > p
c
+ ε.
Ao invés de se analisar, separadamente, o comportamento das relações para esses dois
intervalos, o gráfico L
ε
visualiza todo o intervalo de −∞ a + desconsiderando apenas
uma vizinhança de p
c
.
Esta vizinhança é um intervalo determinado pelo valor de ε, conforme relações abaixo:
L
ε
(p) =
log(p
c
p) + log(ε) se p p
c
ε
log(p p
c
) log(ε) se p p
c
+ ε
47
Figura B.1: Gráfico P
×L
ε
(p) com ε = 0, 0001 - Compara curva teórica e modelos
com malha quadrada com L = 500, 1000, 2000 e 4000, em 2000 realizações. Retirado
da tese de doutorado de J.E. Freitas [8]
48
Anexo C
Rotinas Computacionais
Essas Rotinas foram escritas na linguagem Visual Basic
R
para planilha Excel
R
- 2007
operando sob o sistema Windows-XP
R
- SP3.
Os dados basicos foram gravados na planilha "CONFIG"conforme figura C.1.
Figura C.1: Dados de configuração.
1 VERSION 1 .0 CLASS
2 BEGIN
3 MultiUse = 1 True
4 END
5 A tt r i b ut e VB_Name = " EstaPasta_de_trabalho "
6 A tt r i b ut e VB_GlobalNameSpace = F al s e
7 A tt r i b ut e VB_Creatable = F a ls e
8 A tt r i b ut e VB_PredeclaredId = True
9 A tt r i b ut e VB_E xposed = True
10 Option Base 1
11 Pu b li c S t a t i c Sub popula ( )
12 Dim Px ( )
13 Dim Py ( )
14 Dim Pz ()
15 Dim D()
16 Dim E( )
17 Dim F ( )
18 Dim Plim (3 )
19 Dim f d As F i l e D i a l o g
49
20 Dim v rt S e le c t ed I t e m A s Varia n t
21
22
23 xx = Worksheets (" C onfig " ) . C e l l s ( 1 , 1 ) . Value número de c é l u l a s na d i r e ç ã o x
24 yy = Worksheets (" c o n fi g " ) . C e l l s ( 1 , 2 ) . Value mero de c é l u l a s na d i r e ç ã o y
25 kk = Worksheets (" c o n fi g " ) . C e l l s ( 1 , 3 ) . Value mero de c é l u l a s na d i r e ç ã o z
26
27 l i m i t e s u p e r i o r = Worksheets ( " c o n fi g " ) . C e l l s ( 2 , 1 ) . Value p e rm ea bi li da de máxima
28 l i m i t e i n f e r i o r = Worksheets ( " c o n f i g " ) . Ce l ls ( 3 , 1 ) . Value p e rm ea bi li da de mínima
29
30 kl i m = Worksheets (" Co n fig " ) . C e l l s ( 6 , 1 ) . Value p e r m e ab il id ad e l i m i t e
31
32 di r e t = Worksheets (" c o n f i g " ) . C e l l s ( 7 , 1 ) . Value d i r e t ó r i o de t r a b al h o
33
34 Deltax = Worksheets (" C onfig " ) . C e l l s ( 8 , 2 ). Value Dx
35 Deltay = Worksheets (" C onfig " ) . C e l l s ( 9 , 2 ). Value Dy
36 Deltak = Worksheets (" C onfig " ) . C e l l s ( 10 , 2 ) . Value Dz
37
38 Mi = Worksheets (" C onfig " ) . C e l l s ( 14 , 2 ) . Value
39
40 Areax = Delt a x Deltak ár ea do f l u x o na di r e ç ã o x
41 Areay = Delt a y Deltak ár ea do f l u x o na di r e ç ã o y
42 Areak = Delt a x Deltay ár ea do f l u x o na di r e ç ã o z
43
44 Tx = Areay / (Mi De l t ax ) v a r i a ve l a u x i l i a r para c a l c u lo da transm x
45 Ty = Areax / (Mi De l t ay ) v a r i a ve l a u x i l i a r para c a l c u lo da transm y
46 Tk = Areak / (Mi De l t ak ) v a r i a ve l a u x i l i a r para c a l c u lo da transm z
47
48 Plim (1 ) = klim Tx T r a n s m i s s i b i l i d a d e l i m i t e na d i r e ç ao x
49 Plim (2 ) = klim Ty T r a n s m i s s i b i l i d a d e l i m i t e na d i r e ç ao y
50 Plim (3 ) = klim Tk T r a n s m i s s i b i l i d a d e l i m i t e na d i r e ç ao z
51
52
53 contaBBcel = 0 c o nta c é l u l a s do Backbone
54
55
56 Worksheets (" g r i d " ) . S e l e c t
57
58
59 ReDim Px( xx , yy , kk ) m atri z de pe r m e ab i l i da d e s x
60 ReDim Py( xx , yy , kk ) m atri z de pe r m e ab i l i da d e s y
61 ReDim Pz ( xx , yy , kk ) m atri z de pe rm e ab il i da de s z
62 ReDim D ( xx , yy , kk ) m a tri z de t ra n s m i s s ib i l i d a d es na d i r e ç ã o x
63 ReDim E( xx , yy , kk ) ma tri z de t r an s m i s s i bi l i d a d e s na d i r e ç ã o y
64 ReDim F( x x , yy , kk ) m a tri z de t ra n s m i s s i b i l i d a d es na d i r e ç ã o z
65
66
67 Rotina para s e l eç ã o / c r i a ç ã o de ar q ui vo s de p er m ea bi l id ad e s
68
69 ar q ui vo = d i r e t + "\K_Aleat3D_" + Str ( xx ) + "_" + Str ( yy ) + "_"
70 + St r ( kk ) + " . t x t "
71
72 Clos e #1
73
74
75 hora = Time
76 compH = Len ( hora )
77 For hh = 1 To compH
78 I f Mid( hora , hh , 1) = " : " Then
79 hora = Mid ( hora , 1 , hh 1) + "" + Mid( hora , hh + 1)
80 End I f
81 Next
82
83 ar q ui vo = d ir e t + "\T_Aleat3D_" + Str ( xx ) + "_" + Str ( yy ) + "_"
50
84 + St r ( kk ) + Date$ + "_"
85 + hora + "_x" + " . t x t "
86
87 Worksheets (" Con f ig " ) . C e ll s ( 7 , 1 ) . Value = ar qu ivo
88
89 Randomize
90
91 Open arq u iv o For Output As #1
92
93 Myrec = ""
94
95 For k = 1 To kk
96 For y = 1 To yy
97 For x = 1 To xx
98 Px( x , y , k ) = In t ( ( l i m i t e s u p e r io r l i m i t e i n f e r i o r + 1)
99 Rnd + l i m i t e i n f e r i o r )
100 D( x , y , k ) = Px (x , y , k ) Tx
101 Myrec = D( x , y , k )
102 Pr in t #1, Myrec
103 Next
104 Next
105 Next
106
107 Clos e #1
108
109 arq ui vo = d ir e t + "\T_Aleat3D_" + Str ( xx ) + "_" + Str ( yy ) + "_"
110 + St r ( kk ) + Date$ + "_" + hora + "_y" + " . t xt "
111
112 Randomize
113
114 Open arq u iv o For Output As #1
115
116 Myrec = ""
117
118 For k = 1 To kk
119 For y = 1 To yy
120 For x = 1 To xx
121 Py( x , y , k ) = In t ( ( l i m i t e s u p e r io r l i m i t e i n f e r i o r + 1)
122 Rnd + l i m i t e i n f e r i o r )
123 E( x , y , k ) = Py (x , y , k ) Ty
124 Myrec = E(x , y , k )
125 Pr in t #1, Myrec
126 Next
127 Next
128 Next
129
130 Clos e #1
131
132 arq ui vo = d ir e t + "\T_Aleat3D_" + Str ( xx ) + "_" + Str ( yy ) + "_"
133 + St r ( kk ) + Date$ + "_" + hora + "_z" + " . t xt "
134
135 Randomize
136
137 Open arq u iv o For Output As #1
138
139 Myrec = ""
140
141 For k = 1 To kk
142 For y = 1 To yy
143 For x = 1 To xx
144 Pz ( x , y , k ) = In t ( ( l i m i t e s u p e r i o r l i m i t e i n f e r i o r + 1)
145 Rnd + l i m i t e i n f e r i o r )
146 F(x , y , k ) = Pz ( x , y , k ) Tk
147 Myrec = F( x , y , k )
51
148 Pr in t #1, Myrec
149 Next
150 Next
151 Next
152
153 Clos e #1
154
155 nada = caminho ( D, E, F, Plim , xx , yy , kk , klim , contaBBcel )
156
157 End Sub
158 Pu b li c S t a t i c Function
159 caminho (D, E, F, Plim , xx , yy , kk , klim , contaBBce l )
160
161 Dim Cel ( )
162
163 ReDim Cel ( xx , yy , kk ) m atr iz que i n d i c a s e um s i t i o e st á ocupado 1 , ou va zi o 0
164
165
166 Worksheets (" dados " ) . S e l e c t s e l e c i o n a e apaga dados
167 Columns ("A: J " ) . S e l e c t
168 S el e ct i on . Cle arCo nten ts
169
170 Worksheets ("CC" ) . S el e c t s e le ci o n a e apaga c é l u l a s do caminho c r í t i c o
171 Columns ("A:B " ) . S e l e c t
172 S el e ct i on . Cle arCo nten ts
173
174 For k = 1 To kk z er a m a tri z de ocupação
175 For y = 1 To yy
176 For x = 1 To xx
177 Cel (x , y , k ) = 0
178 Next
179 Next
180 Next
181
182 x i n j = Worksheets (" Conf ig " ) . C e l ls ( 4 , 1 ) . Value c é l ul a do poço i n j e t o r x
183 y i n j = Worksheets (" Conf ig " ) . C e l ls ( 4 , 2 ) . Value c é l ul a do poço i n j e t o r y
184 k i n j = Worksheets (" Conf ig " ) . C e l ls ( 4 , 3 ) . Value c é l ul a do poço i n j e t o r z
185
186 xprd = Worksheets ( " C onfig " ) . C e l l s ( 5 , 1 ) . Value c él ul a do poço prod utor x
187 yprd = Worksheets ( " C onfig " ) . C e l l s ( 5 , 2 ) . Value c él ul a do poço prod utor y
188 kprd = Worksheets ( " C onfig " ) . C e l l s ( 5 , 3 ) . Value c él ul a do poço prod utor z
189
190
191 ú l tim a l i n h a da p l a n i l h a dados
192 l a s t l i n h a = Worksheets ( " dados " ) . Range ( " A65536 " ) . End( xlUp ) .Row
193
194 grava c e l u l a do i n j e t o r
195 Worksheets (" dados " ) . C e l l s ( l a s t li n ha , 1 ) . Value = St r ( x i n j ) &
196 " , " & St r ( y i n j ) & " , " & Str ( k i n j )
197
198 Worksheets (" dados " ) . C e l l s ( l a s t li n ha , 2 ) . Value = "" grava para c e l u l a origem
199
200 I n j = S tr ( x in j ) & " , " & S t r ( y i n j ) & " ," & Str ( k i n j )
201 Prd = Str ( xprd ) & " ," & Str ( yprd ) & " ," & S tr ( kprd )
202
203 x c e l = xi n j coord e nadas da c é l ul a i n i c i a l = a do i n j e t o r
204 y c e l = yi n j
205 k c e l = ki n j
206
207 Worksheets (" g r i d " ) . S e l e c t
208
209 Cel ( x c el , yc el , k c e l ) = 1 co n di ção da c é l u l a do i n j e t o r ocupada
210
211 Worksheets (" g r i d " ) . Range ( C e l l s ( yc el , x c e l ) , C e l l s ( y ce l , x c e l ) ) . S e l e c t
52
212 With S e l ec t io n . I n t e r i o r
213 . C olorI ndex = co ragua
214 . P atte r n = x l S o l i d
215 End Wit h
216
217 Worksheets (" g r i d " ) . Range ( C e l l s ( yprd , xprd ) , C e l l s ( yprd , xprd ) ) . S e le c t
218 With S e l ec t io n . I n t e r i o r
219 I f . Col o rInd ex <> co r cc Then
220 . C olorI ndex = corbb
221 . P atte r n = x l S o l i d
222 End I f
223 End Wit h
224
225
226
227 D( xprd , yprd , kprd ) = Plim ( 1 ) c ond iç ã o da c é l u l a do poço prod utor
228 E( xprd , yprd , kprd ) = Plim (2 )
229 F( xprd , yprd , kprd ) = Plim (3 )
230
231 colu na = 2
232 l i n h a = l a s t l i n h a
233 para = F a l s e
234
235 Worksheets (" g r i d " ) . S e l e c t
236
237 Do While Not para
238
239
240 ol ha para c é l u l a a esque rda
241
242 I f x c e l 1 > 0 Then
243
244 I f Cel ( x c e l 1 , y ce l , k c e l ) = 0 And D( x c e l 1 , y ce l , k c e l ) >=
245 Plim (1 ) Then
246
247 Cel ( x c e l 1 , y ce l , k c e l ) = 1
248
249 c e l ul ad es t i n o = Str ( x c e l 1) & " ," & S tr ( y c e l ) & " ," & Str ( k c e l )
250 c e l ul a o r i g e m = St r ( x c e l ) & " , " & Str ( y c e l ) & " ," & Str ( k c e l )
251 colu na = c olu na + 1
252 r e g i s t r a pra onde f o i
253 Worksheets ( " dados " ) . C e l l s ( l in h a , co lun a ) . Value = c e lu l a d e s t i n o
254 l a s t l i n h a = Worksheets ( " dados " ) . Range (" A65536 " ). End( xlUp ) .Row + 1
255 r e g i s t r a nova c é l u l a
256 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 1 ) . Value = c e l u l a d e s t in o
257 r e g i s t r a de onde v e io
258 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 2 ) . Value = c e lu l a o r i g e m
259
260 I f c e lu la d e s t i n o = Prd Then v e r i f i c a s e chegou no pro duto r
261 para = True
262 End I f
263 End I f
264 End I f
265
266 ol ha para c é l u l a a d i r e i t a
267
268 I f x c e l + 1 <= xx Then
269
270 I f Cel ( x c e l + 1 , yc el , k c e l ) = 0 And D( x c e l + 1 , y ce l , k c e l ) >=
271 Plim ( 1) Then
272
273 Cel ( x c e l + 1 , yc el , k c e l ) = 1
274
275 c e l ul ad es t i n o = Str ( x c e l + 1) & " ," & Str ( y c e l ) & " , " & St r ( k c e l )
53
276 c e l ul a o r i g e m = St r ( x c e l ) & " , " & Str ( y c e l ) & " ," & Str ( k c e l )
277 colu na = c olu na + 1
278 r e g i s t r a pra onde f o i
279 Worksheets ( " dados " ) . C e l l s ( l in h a , co lun a ) . Value = c e lu l a d e s t i n o
280 l a s t l i n h a = Worksheets ( " dados " ) . Range (" A65536 " ). End( xlUp ) .Row + 1
281 r e g i s t r a nova c é l u l a
282 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 1 ) . Value = c e l u l a d e s t in o
283 r e g i s t r a de onde v e io
284 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 2 ) . Value = c e lu l a o r i g e m
285
286 I f c e lu la d e s t i n o = Prd Then v e r i f i c a s e chegou no pro duto r
287 para = True
288 End I f
289 End I f
290 End I f
291
292 ol ha para c é l u l a acima
293
294 I f y c e l 1 > 0 Then
295
296 I f Cel ( xc el , y c e l 1 , k c e l ) = 0 And E( xc el , y c e l 1 , k c e l ) >=
297 Plim ( 2) Then
298
299 Cel ( xc el , y c e l 1 , k c e l ) = 1
300 c e l ul ad es t i n o = Str ( x c e l ) & " , " & Str ( y c e l 1) & " ," & Str ( k c e l )
301 c e l ul a o r i g e m = St r ( x c e l ) & " , " & Str ( y c e l ) & " ," & Str ( k c e l )
302 colu na = c olu na + 1
303 r e g i s t r a pra onde f o i
304 Worksheets ( " dados " ) . C e l l s ( l in h a , co lun a ) . Value = c e lu l a d e s t i n o
305 l a s t l i n h a = Worksheets ( " dados " ) . Range (" A65536 " ). End( xlUp ) .Row + 1
306 r e g i s t r a nova c é l u l a
307 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 1 ) . Value = c e l u l a d e s t in o
308 r e g i s t r a de onde v e io
309 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 2 ) . Value = c e lu l a o r i g e m
310
311 I f c e lu la d e s t i n o = Prd Then v e r i f i c a s e chegou no pro duto r
312 para = True
313 End I f
314 End I f
315 End I f
316
317 ol ha para c é l u l a abaix o
318
319 I f y c e l + 1 <= yy Then
320
321 I f Cel ( xc el , y c e l + 1 , k c e l ) = 0 And E( xc el , y c e l + 1 , k c e l ) >=
322 Plim ( 2) Then
323
324 Cel ( xc el , y c e l + 1 , k c e l ) = 1
325 c e l ul ad es t i n o = Str ( x c e l ) & " , " & Str ( y c e l + 1) & " ," & St r ( k c e l )
326 c e l ul a o r i g e m = St r ( x c e l ) & " , " & Str ( y c e l ) & " ," & Str ( k c e l )
327 colu na = c olu na + 1
328 r e g i s t r a pra onde f o i
329 Worksheets ( " dados " ) . C e l l s ( l in h a , co lun a ) . Value = c e lu l a d e s t i n o
330 l a s t l i n h a = Worksheets ( " dados " ) . Range (" A65536 " ). End( xlUp ) .Row + 1
331 r e g i s t r a nova c é l u l a
332 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 1 ) . Value = c e l u l a d e s t in o
333 r e g i s t r a de onde v e io
334 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 2 ) . Value = c e lu l a o r i g e m
335
336 I f c e lu la d e s t i n o = Prd Then v e r i f i c a s e chegou no pro duto r
337 para = True
338 End I f
339 End I f
54
340
341 End I f
342
343
344 ol ha para c é l u l a do n í v el aba ixo
345
346 I f k c e l + 1 <= kk Then
347
348 I f Cel ( xc el , y ce l , k c e l + 1) = 0 And F( x ce l , yc el , k c e l + 1) >=
349 Plim ( 3) Then
350
351 Cel ( xc el , y ce l , k c e l + 1) = 1
352 c e l ul ad es t i n o = Str ( x c e l ) & " , " & Str ( y c e l ) & " ," & Str ( k c e l + 1)
353 c e l ul a o r i g e m = St r ( x c e l ) & " , " & Str ( y c e l ) & " ," & Str ( k c e l )
354 colu na = c olu na + 1
355 r e g i s t r a pra onde f o i
356 Worksheets ( " dados " ) . C e l l s ( l in h a , co lun a ) . Value = c e lu l a d e s t i n o
357 l a s t l i n h a = Worksheets ( " dados " ) . Range (" A65536 " ). End( xlUp ) .Row + 1
358 r e g i s t r a nova c é l u l a
359 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 1 ) . Value = c e l u l a d e s t in o
360 r e g i s t r a de onde v e io
361 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 2 ) . Value = c e lu l a o r i g e m
362
363 I f c e lu la d e s t i n o = Prd Then v e r i f i c a s e chegou no pro duto r
364 nn = MsgBox (" Chegou " , vbOKOnly , "Caminho ")
365 para = True
366 End I f
367 End I f
368
369 End I f
370
371 ol ha para c é lu la do n í v e l Acima
372
373 I f k c e l 1 > 0 Then
374
375 I f Cel ( xc el , y ce l , k c e l 1) = 0 And F( xc el , y ce l , k c e l 1) >
376 = Plim ( 3 ) Then
377
378 Cel ( xc el , y ce l , k c e l 1) = 1
379 c e l ul ad es t i n o = Str ( x c e l ) & " , " & Str ( y c e l ) & " ," & Str ( k c e l 1)
380 c e l ul a o r i g e m = St r ( x c e l ) & " , " & Str ( y c e l ) & " ," & Str ( k c e l )
381 colu na = c olu na + 1
382 r e g i s t r a pra onde f o i
383 Worksheets ( " dados " ) . C e l l s ( l in h a , co lun a ) . Value = c e lu l a d e s t i n o
384 l a s t l i n h a = Worksheets ( " dados " ) . Range (" A65536 " ). End( xlUp ) .Row + 1
385 r e g i s t r a nova c é l u l a
386 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 1 ) . Value = c e l u l a d e s t in o
387 r e g i s t r a de onde v e io
388 Worksheets ( " dados " ) . C e l l s ( l a s tl i nh a , 2 ) . Value = c e lu l a o r i g e m
389
390 I f c e lu la d e s t i n o = Prd Then v e r i f i c a s e chegou no pro duto r
391 para = True
392 End I f
393 End I f
394
395 End I f
396
397 col una = 2
398 l i n h a = l i n h a + 1
399 coord = Worksheets (" dados " ) . C e l l s ( l in ha , 1 ) . Value
400 comprimento = Len ( coord )
401
402 I f comprimento = 0 Then
403 nn = MsgB ox(" o at i n g i u poço pro d utor " , vbOKOnly , "Caminho ")
55
404 Exit Function
405 End I f
406
407 v e r i f i c a co o rdena das da próxima c é l u l a
408
409 For pos = 1 To comprimento
410 I f Mid ( coord , pos , 1) = " , " Then
411 x c e l = Val (Mid ( coord , 1 , pos 1 ))
412 pos1 = pos
413 Exit For
414 End I f
415 Next
416
417 For pos2 = pos1 + 1 To comprimento
418 c a r a c = Mid ( coord , pos2 , 1)
419 I f c ar ac = " ," Then
420 y c e l = Val (Mid ( coord , pos1 + 1 , pos2 1 ) )
421 k c e l = Val (Mid ( coord , pos2 + 1 , comprimento ) )
422 Exit For
423 End I f
424 Next
425
426 Loop
427
428 ndn =
429 C r it i co (D, E , F , Plim , Cel , I nj , Prd , xprd , yprd , kprd , xx , yy , kk , klim , contaBBcel )
430
431 End Function
432
433 Pu b li c S t a t i c Function C r i ti c o
434 (D, E , F , Plim , Cel , In j , Prd , xprd , yprd , kprd , xx , yy , kk , klim , contaBBce l )
435
436 Dim nullBB
437 Dim nullCC
438
439 ReDim nullBB ( xx , yy , kk )
440 ReDim nullCC ( xx , yy , kk )
441
442
443 di r e t = Worksheets (" c o n f i g " ) . C e l l s ( 7 , 1 ) . Value
444
445 l a s t l i n h a = Worksheets ( " dados " ) . Range ( " A65536 " ) . End( xlUp ) .Row
446
447 c e l u l a a n t e r i o r = Worksheets ( " dados " ) . C e l l s ( l a s t li n ha , 2 ) . Value
448
449 linhaCC = 1
450
451 With Worksheets (" dados " ) . Range (" a1 : a65536 ")
452
453 Do While c e l u l a a n t e r i o r <> I n j
454
455 Set C = . Find ( c e lu la an t er io r , LookIn := xlV al ue s )
456
457 I f Not C I s Nothing Then
458 f ir s tA d dr e ss = C. Address ( R e f e r e nc e S t y l e :=xlR1C1 )
459
460 For N = 1 To Len ( f i r s t Ad d re s s )
461
462 I f Mid ( f i r s t A d d r e s s , N, 1) = "C" Then
463 l i n h a c e l = Val (Mid ( f i r s t A d d r e s s , 2 , N 2) )
464 End I f
465
466 Next
467
56
468 c e l u l a a n t e r i o r = C . Value
469
470 Worksheets ( "CC" ) . C e l l s ( linhaCC , 1) = C. Value
471 linhaCC = linhaCC + 1
472
473 I f c e l u l a a n t e r i o r = I n j Then
474 Exi t Function
475 End I f
476
477 comprimento = Len ( c e l u l a a n t e r i o r )
478
479 I f comprimento = 0 Then
480 nn = MsgB ox(" Erro no caminho c r i t i c o " , vbOKO nly , "Caminho ")
481 Exit Function
482 End I f
483
484
485 For pos = 1 To comprimento
486 I f Mid ( c e l u la a nt er io r , pos , 1) = " , " Then
487 xc e l u l a a n t = Val (Mid( c e l u la a n t er io r , 1 , pos 1 ))
488 pos1 = pos
489 Ex i t For
490 End I f
491 Next
492
493 For pos2 = pos1 + 1 To comprimento
494 ca ra c = Mid ( c e l u la an t e r io r , pos2 , 1)
495 I f c ar ac = " ," Then
496 y c e l u l a a n t = Val ( Mid( c e l u la a n t er io r , pos1 + 1 , pos2 1) )
497 k c e l u l a a n t = Val ( Mid( c e l u la a n t er io r , pos2 + 1 , comprimento ) )
498 Ex it For
499 End I f
500 Next
501
502 Cel ( x ce l ul a an t , y ce l ul a a n t , k c e l u l aa n t ) = 99
503
504
505 contaBBcel = contaBBcel + 1
506
507 End I f
508
509 c e l u l a a n t e r i o r = Worksheets (" dados " ) . C el l s ( l i n h ac e l , 2 ) . Value
510
511 Loop
512
513 End Wit h
514
515 INCLUIR ROTINA PARA GRAVAR O CAMINHO CRÍTICO
516
517 Clos e #1
518
519 arq ui vo = d ir e t + "\Caminho_NULL . t x t "
520
521 Open arq u iv o For Output As #1
522
523 For k = 1 To kk
524 For y = 1 To yy
525 For x = 1 To xx
526 I f Cel ( x , y , k ) <> 0 And Cel (x , y , k ) <> 1 Then
527 nullCC (x , y , k ) = 1
528 El se
529 nullCC (x , y , k ) = 0
530 End I f
531 Myrec = nullCC ( x , y , k )
57
532 Pr in t #1, Myrec
533 Next
534 Next
535 Next
536
537 Clos e #1
538
539
540 nd = MsgB ox(" Dese ja o b t e r o BackB one ? N úmero de c é l u l a s do Caminho C rí t i co =
541 " & S tr ( contaBBcel ) , vbOKCancel , "Caminho C r í t i c o BackBone ")
542
543 I f nd = 1 Then
544
545 contaCC = 1
546 fimCC = F a ls e
547
548 Do While Not fimCC And contaCC <= 30
549
550 Worksheets (" g r id " ) . C e l l s ( 20 1 , 2 0 2 ) . Value = fimCC
551 Worksheets (" Grid " ). C e l l s ( 20 1 , 2 0 3 ) . Value = contaCC
552 Worksheets (" Grid " ). C e l l s ( 20 1 , 2 0 6 ) . Value =
553 Worksheets (" dados " ) . Range (" A65536 " ) . End( xlUp ) . Row
554
555
556 numCC = 99 contaCC
557
558 contaCC = contaCC + 1
559
560 ndn = caminhoBB ( Cel , D, E, F , Plim , xx , yy , kk , klim , numCC, fimCC , contaBBcel )
561
562 apaga CC
563
564 Worksheets ("CC" ) . Columns ("A:B" ) . Cle arCo nten ts
565
566 l i nh a gr a v a = 1
567
568 For k = 1 To kk
569 For y = 1 To yy
570 For x = 1 To xx
571 I f Cel (x , y , k ) = numCC Then
572 Worksheets ("CC" ) . C e l l s ( l in ha g ra va , 1 ) . Value = Str ( x ) + " ,"
573 + St r ( y ) + " ," + Str ( k )
574 l i n h a g r av a = l in h ag r av a + 1
575 End I f
576 Next
577 Next
578 Next
579
580 Loop
581
582
583 Worksheets (" g r i d " ) . C e l l s ( 20 3 , 2 0 3 ). Value = contaBBcel
584
585 v a r ri d o = 100 ( contaBBcel / ( Worksheets (" Con fig " ). C e l l s ( 1 , 1 ) . Value
586 Worksheets (" Config " ) . C e l l s ( 1 , 2 ). Value
587 Worksheets (" C onfig " ) . C e l l s ( 1 , 3 ). Value ) )
588
589 INCLUIR ROTINA PARA GRAVAR BACKBONE
590
591
592 Clo se #1
593
594 ar qu i vo = d i r e t + "\Backbone_NULL . t x t "
595
58
596 Open a r qu ivo For Output As #1
597
598 For k = 1 To kk
599 For y = 1 To yy
600 For x = 1 To xx
601 I f Cel ( x , y , k ) <> 0 And Cel (x , y , k ) <> 1 Then
602 nullBB ( x , y , k ) = 1
603 E ls e
604 nullBB ( x , y , k ) = 0
605 End I f
606 Myrec = nullBB (x , y , k )
607 P ri nt #1, Myrec
608 Next
609 Next
610 Next
611
612 Clo se #1
613
614 nd = MsgBox(" Fim normal ! " + Chr (10 ) + " E f i c i ê n c i a de v a r r i d o =
615 " + Str ( v a r r i d o ) + "%", vbOKOnly ,
616 "Caminho C r í t i c o BackBone ")
617
618 End I f
619
620 End Function
621
622 =================================================================================
623
624 Pu b li c S t a t i c Function
625 caminhoBB ( Cel , D, E, F, Plim , xx , yy , kk , klim , numCC, fimCC , contaBBcel )
626
627
628 >> I n i c i o da Rotina do BB <<
629
630
631
632 la st li nh aC C = Worksheets ( "CC" ) . Range (" A65536 " ). End( xlUp ) .Row
633
634
635 <<>>
636 << I n i c i a l i z a I n j e t o r >>
637
638 passou = F al se
639
640 For ncc = 1 To l as tl in ha C C
641
642 Worksheets (" dados " ) . Columns ("A: J " ) . Cl e arC o nte n ts
643
644
645 For k = 1 To kk
646 For y = 1 To yy
647 For x = 1 To xx
648 I f Cel ( x , y , k ) = 1 Then
649 Cel ( x , y , k ) = 0
650 End I f
651 Next
652 Next
653 Next
654
655 I nj = Worksheets ("CC" ) . C e ll s ( ncc , 1 ) . Value
656
657 comprimento = Len ( I n j )
658
659 I f comprimento = 0 Then
59
660 fimCC = True
661 nn = MsgBox(" Erro no caminho c r i t i c o BB" , vbOKOnly , "Caminho ")
662 Exit Function
663 End I f
664
665 For pos = 1 To comprimento
666 I f Mid ( I nj , pos , 1) = " ," Then
667 x i n j = Val ( Mid( I nj , 1 , pos 1) )
668 pos1 = pos
669 Exit For
670 End I f
671 Next
672
673 For pos2 = pos1 + 1 To comprimento
674 c a r a c = Mid ( I n j , pos2 , 1 )
675 I f c ar ac = " ," Then
676 y i n j = Val (Mid( I nj , pos1 + 1 , pos2 1 ) )
677 k i n j = Val (Mid( I nj , pos2 + 1 , comprimento ) )
678 Exit For
679 End I f
680 Next
681
682 l a s t l i n h a = Worksheets (" dados " ) . Range ( " A65536 " ) . End( xlUp ) .Row
683
684 Worksheets (" dados " ) . C e l l s ( l a s t li n ha , 1 ) . Value = Str ( x i n j ) & " ,"
685 & St r ( y i n j ) & " , " & S tr ( k i n j )
686 Worksheets (" dados " ) . C e l l s ( l a s t li n ha , 2 ) . Value = ""
687
688 x c e l = x i nj
689 y c e l = y i nj
690 k c e l = k i nj
691
692 Worksheets (" g r i d " ) . S e l e c t
693 col una = 2
694 l i n h a = l a s t l i n h a
695 para = Fal se
696 c o n t a c e l = 0
697
698
699 Worksheets (" g r i d " ) . S e l e c t
700 <<>>
701 << I n i c i o do Loop para um mesmo I n j e t o r >>
702 <<>>
703
704 Do While Not para
705
706 Worksheets (" Grid " ). C e l l s ( 20 1 , 2 0 6 ) . Value = Worksheets (" dados " ) .
707 Range (" A65536 " ) . End( xlUp ) .Row
708
709 ol ha para c é l u l a a esque rda
710
711 I f x c e l 1 > 0 Then
712
713 I f Cel ( x c e l 1 , y ce l , k c e l ) >= (numCC + 1) And
714 Cel ( x c el , yc el , k c e l ) = 1 And Cel ( x c e l 1 , y cel , k c e l )
715 <> I n j And c o n t a ce l > 0 Then
716 xprd = xc e l
717 yprd = yc e l
718 kprd = kc e l
719 ndn =
720 CriticoBB ( Cel , D, E, F, Plim , I nj , xprd , yprd , kprd , xx , yy , kk , numCC, contaBBcel )
721 c o n t a c e l = 0
722 passou = True
723 E l s e I f Cel ( x c e l 1 , y ce l , k c e l ) = 0 And D( x c e l 1 , y ce l , k c e l ) >=
60
724 Plim (1 ) Then
725 Cel ( x c e l 1 , y ce l , k c e l ) = 1
726 c e l ul ad es t i n o = St r ( x c e l 1) & " , " & S tr ( y c e l ) & " ," & Str ( k c e l )
727 ce l u la o r i g e m = S tr ( x c e l ) & " ," & Str ( y c e l ) & " ," & Str ( k c e l )
728 co lun a = col u na + 1
729 Worksheets (" dados " ) . C e ll s ( li nh a , col u na ) . Value =
730 ce lu l a d e s t i n o r e g i s t r a pra onde f o i
731 l a s t l i n h a = Worksheets (" dados " ) . Range ( " A65536 " ) . End( xlUp ) . Row + 1
732 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 1 ) . Value =
733 ce lu l a d e s t i n o r e g i s t r a nova c é l u l a
734 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 2 ) . Value =
735 c e l ul a o r i g e m r e g i s t r a de onde ve i o
736 I f Cel ( xc el , y ce l , k c e l ) <> (numCC + 1) Then
737 co n t a c el = co n t a c e l + 1
738 End I f
739
740 End I f
741 End I f
742
743 ol ha para c é l u l a a d i r e i t a
744
745 I f x c e l + 1 <= xx Then
746
747 I f Cel ( x c e l + 1 , yc el , k c e l ) >= (numCC + 1) And Cel ( xce l , yc el , k c e l ) = 1
748 And Cel ( x c e l + 1 , y ce l , k c e l )<> I n j And c o n t a c e l > 0 Then
749 xprd = xc e l
750 yprd = yc e l
751 kprd = kc e l
752 ndn = CriticoBB ( Cel , D, E, F, Plim , In j , xprd , yprd , kprd , xx , yy , kk , numCC, contaBBcel )
753 co n t a c e l = 0
754 passou = True
755 E l s e I f Cel ( x c e l + 1 , yc e l , k c e l ) = 0 And D( x c e l + 1 , yc el , k c e l ) >=
756 Plim (1 ) Then
757 Cel ( x c e l + 1 , yc el , k c e l ) = 1
758 c e l ul ad es t i n o = St r ( x c e l + 1) & " ," & Str ( y c e l ) & " , " & St r ( k c e l )
759 ce l u la o r i g e m = S tr ( x c e l ) & " ," & Str ( y c e l ) & " ," & Str ( k c e l )
760 co lun a = col u na + 1
761 Worksheets (" dados " ) . C e ll s ( li nh a , col u na ) . Value =
762 c e lu l a d e s t i n o r e g i s t r a pra onde f o i
763 l a s t l i n h a = Worksheets (" dados " ) . Range ( " A65536 " ) . End( xlUp ) . Row + 1
764 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 1 ) . Value =
765 c e lu l a d e s t i n o r e g i s t r a nova c é l u l a
766 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 2 ) . Value =
767 c e l ul a o r i g e m r e g i s t r a de onde ve i o
768 I f Cel ( xc el , y ce l , k c e l ) <> (numCC + 1) Then
769 co n t a c el = co n t a c e l + 1
770 End I f
771 End I f
772 End I f
773
774
775
776 ol ha para c é l u l a acima
777
778 I f y c e l 1 > 0 Then
779
780 I f Cel ( xc el , y c e l 1 , k c e l ) >= (numCC + 1) And Cel ( xc el , y ce l , k c e l ) = 1 And
781 Cel ( x c el , y c e l 1 , k c e l ) <> I n j And c o n t a c e l > 0 Then
782 xprd = xc e l
783 yprd = yc e l
784 kprd = kc e l
785 ndn = Critic o B B ( Cel , D, E, F , Plim , I nj , xprd , yprd , kprd , xx , yy , kk , numCC, contaBBcel )
786 co n t a c e l = 0
787 passou = True
61
788 E l s e I f Cel ( xc e l , y c e l 1 , k c e l ) = 0 And E( x ce l , y c e l 1 , k c e l )
789 >= Plim ( 2) Then
790 Cel ( xc el , y c e l 1 , k c e l ) = 1
791 c e l ul ad es t i n o = St r ( x c e l ) & " ," & St r ( y c e l 1) & " ," & St r ( k c e l )
792 ce l u la o r i g e m = S tr ( x c e l ) & " ," & Str ( y c e l ) & " ," & Str ( k c e l )
793 co lun a = col u na + 1
794 Worksheets (" dados " ) . C e ll s ( li nh a , col u na ) . Value
795 = c e l u l a d e s t in o r e g i s t r a pra onde f o i
796 l a s t l i n h a = Worksheets (" dados " ) . Range ( " A65536 " ) . End( xlUp ) . Row + 1
797 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 1 ) . Value
798 = c e l u l a d e s t in o r e g i s t r a nova c é l u l a
799 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 2 ) . Value
800 = c e l u l a o r i g em r e g i s t r a de onde v ei o
801 I f Cel ( xc el , y ce l , k c e l ) <> (numCC + 1) Then
802 co n t a c el = co n t a c e l + 1
803 End I f
804 End I f
805 End I f
806
807 ol ha para c é l u l a abaix o
808
809 I f y c e l + 1 <= yy Then
810
811 I f Cel ( xc el , y c e l + 1 , k c e l ) >= (numCC + 1) And Cel ( xce l , yc el , k c e l ) = 1 And
812 Cel ( x c el , y c e l + 1 , k c e l )<> I n j And c o n t a c e l > 0 Then
813 xprd = xc e l
814 yprd = yc e l
815 kprd = kc e l
816 ndn = CriticoBB ( Cel , D, E, F, Plim , In j , xprd , yprd , kprd , xx , yy , kk , numCC, contaBBcel )
817 co n t a c e l = 0
818 passou = True
819 E l s e I f Cel ( xce l , y c e l + 1 , k c e l ) = 0 And E( x cel , y c e l + 1 , k c e l ) >= Plim ( 2) Then
820 Cel ( xc el , y c e l + 1 , k c e l ) = 1
821 c e l ul ad es t i n o = St r ( x c e l ) & " ," & St r ( y c e l + 1) & " ," & Str ( k c e l )
822 ce l u la o r i g e m = S tr ( x c e l ) & " ," & Str ( y c e l ) & " ," & Str ( k c e l )
823 co lun a = col u na + 1
824 Worksheets (" dados " ) . C e ll s ( li nh a , col u na ) . Value
825 = c e l u l a d e s t in o r e g i s t r a pra onde f o i
826 l a s t l i n h a = Worksheets (" dados " ) . Range ( " A65536 " ) . End( xlUp ) . Row + 1
827 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 1 ) . Value
828 = c e l u l a d e s t in o r e g i s t r a nova c é l u l a
829 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 2 ) . Value
830 = c e l u l a o r i g em r e g i s t r a de onde v ei o
831 I f Cel ( xc el , y ce l , k c e l ) <> (numCC + 1) Then
832 co n t a c el = co n t a c e l + 1
833 End I f
834 End I f
835
836 End I f
837
838 >
839
840
841 olh a para camada acima
842
843 I f k c e l + 1 <= kk Then
844
845 I f Cel ( xc el , y ce l , k c e l + 1) >= (numCC + 1) And Cel ( x cel , yc el , k c e l ) = 1 And
846 Cel ( x c el , yc el , k c e l + 1 ) <> I n j And c o n t a c e l > 0 Then
847 xprd = xc e l
848 yprd = yc e l
849 kprd = kc e l
850 ndn = CriticoBB ( Cel , D, E, F, Plim , In j , xprd , yprd , kprd , xx , yy , kk , numCC, contaBBcel )
851 co n t a c e l = 0
62
852 passou = True
853 E l s e I f Cel ( xc e l , y cel , k c e l + 1) = 0 And F( xc e l , y cel , k c e l + 1)
854 >= Plim ( 3) Then
855 Cel ( xc el , y ce l , k c e l + 1) = 1
856 c e l ul ad es t i n o = St r ( x c e l ) & " ," & St r ( y c e l ) & " ," & Str ( k c e l + 1)
857 ce l u la o r i g e m = S tr ( x c e l ) & " ," & Str ( y c e l ) & " ," & Str ( k c e l )
858 co lun a = col u na + 1
859 Worksheets (" dados " ) . C e ll s ( li nh a , col u na ) . Value
860 = c e l u l a d e s t in o r e g i s t r a pra onde f o i
861 l a s t l i n h a = Worksheets (" dados " ) . Range ( " A65536 " ) . End( xlUp ) . Row + 1
862 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 1 ) . Value
863 = c e l u l a d e s t in o r e g i s t r a nova c é l u l a
864 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 2 ) . Value
865 = c e l u l a o r i g em r e g i s t r a de onde v ei o
866 I f Cel ( xc el , y ce l , k c e l ) <> (numCC + 1) Then
867 co n t a c el = co n t a c e l + 1
868 End I f
869 End I f
870
871 End I f
872
873 o lh a para camada abaixo
874
875 I f k c e l 1 > 0 Then
876
877 I f Cel ( xc el , y ce l , k c e l 1) >= (numCC + 1 ) And Cel ( xc el , y ce l , k c e l ) = 1 And
878 Cel ( x c el , yc el , k c e l 1) <> I n j And c o n t a c e l > 0 Then
879 xprd = xc e l
880 yprd = yc e l
881 kprd = kc e l
882 ndn =
883 Cr i t icoBB ( Cel , D, E, F, Plim , I nj , xprd , yprd , kprd , xx , yy , kk , numCC, contaBBcel )
884 co n t a c e l = 0
885 passou = True
886 E l s e I f Cel ( xc e l , y cel , k c e l 1) = 0 And F( xc el , y ce l , k c e l 1)
887 >= Plim ( 3) Then
888 Cel ( xc el , y ce l , k c e l 1) = 1
889 c e l ul ad es t i n o = Str ( x c e l ) & " , " & St r ( y c e l ) & " ," & St r ( k c e l 1)
890 ce l u la o r i g e m = S tr ( x c e l ) & " ," & Str ( y c e l ) & " ," & Str ( k c e l )
891 co lun a = col u na + 1
892 Worksheets (" dados " ) . C e ll s ( li nh a , col u na ) . Value
893 = c e l u l a d e s t in o r e g i s t r a pra onde f o i
894 l a s t l i n h a = Worksheets (" dados " ) . Range ( " A65536 " ) . End( xlUp ) . Row + 1
895 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 1 ) . Value
896 = c e l u l a d e s t in o r e g i s t r a nova c é l u l a
897 Worksheets (" dados " ) . C e ll s ( l as t li n ha , 2 ) . Value
898 = c e l u l a o r i g em r e g i s t r a de onde v ei o
899 I f Cel ( xc el , y ce l , k c e l ) <> (numCC + 1) Then
900 co n t a c el = co n t a c e l + 1
901 End I f
902 End I f
903
904 End I f
905
906 co l una = 2
907 l i n h a = li n h a + 1
908 coord = Worksheets (" dados " ) . C e ll s ( li nh a , 1 ) . Value
909 comprimento = Len ( co o rd )
910
911 I f comprimento = 0 Then
912 para = True
913 I f passou Then
914 fimCC = F a ls e
915 El se
63
916 fimCC = True
917 End I f
918 E ls e
919 For pos = 1 To comprimento
920 I f Mid( coord , pos , 1) = " ," Then
921 xc e l = Val (Mid( coord , 1 , pos 1 ) )
922 pos1 = pos
923 Ex i t For
924 End I f
925 Next
926
927 For pos2 = pos1 + 1 To comprimento
928 ca ra c = Mid ( coord , pos2 , 1)
929 I f c ar ac = " ," Then
930 y c e l = Val (Mid ( coord , pos1 + 1 , pos2 1 ) )
931 k c e l = Val (Mid ( coord , pos2 + 1 , comprimento ) )
932 Ex it For
933 End I f
934 Next
935 End I f
936 I f Cel ( xc el , y ce l , k c e l ) = numCC + 1 Then
937 c o n t a c e l = 0
938 End I f
939 Loop
940
941 Next
942
943 End Function
944
945 ============================================================================
946
947 Pu b li c S t a t i c Function
948 CriticoBB ( Cel ,D, E, F, Plim , I nj , xprd , yprd , kprd , xx , yy , kk , numCC, contaBBcel )
949
950 c e l u l a a n t e r i o r = St r ( xprd ) + " ," + S tr ( yprd ) + " ," + S tr ( kprd )
951
952 di r e t = Worksheets (" c o n f i g " ) . C e l l s ( 8 , 3 ) . Value
953
954 With Worksheets (" dados " ) . Range (" a1 : a65536 ")
955
956 tamCC = 1
957
958 Do While c e l u l a a n t e r i o r <> I n j
959
960 Set bb = . Find ( c e lu l aa nt er i or , LookIn := xlV al ue s )
961
962 I f Not bb I s Nothing Then
963 f ir s tA d dr e ss = bb . Address ( R e f e re n c e St y l e :=xlR1C1 )
964
965 For N = 1 To Len ( f i r s t Ad d re s s )
966
967 I f Mid( f i r s t A d d r e s s , N, 1) = "C" Then
968 l i n h a c e l = Val (Mid ( f i r s t A d d r e s s , 2 , N 2) )
969 End I f
970
971 Next
972
973 c e l u l a a n t e r i o r = bb . Value
974
975 t e s te = Worksheets (" dados " ) . C e l ls ( l i n h a c el , 2 ) . Value
976
977 I f t e st e = I n j And tamCC = 1 Then
978 Exi t Function
979 End I f
64
980
981 I f c e l u l a a n t e r i o r = I n j Then
982 Exi t Function
983 End I f
984
985 comprimento = Len ( c e l u l a a n t e r i o r )
986
987 I f comprimento = 0 Then
988 nn = MsgBox (" Erro no caminho c r i t i c o " , vbOKOnly , "Caminho ")
989 Exit Function
990 End I f
991
992 For pos = 1 To comprimento
993 I f Mid( c el ul a a n te ri o r , pos , 1 ) = " ," Then
994 xc e l u l a a n t = Val (Mid( c e l u la a n t er io r , 1 , pos 1 ))
995 pos1 = pos
996 Ex i t For
997 End I f
998 Next
999
1000 For pos2 = pos1 + 1 To comprimento
1001 ca ra c = Mid ( c e l u la an t e r io r , pos2 , 1)
1002 I f c ar ac = " ," Then
1003 y c e l u l a a n t = Val ( Mid( c e l u la a n t er io r , pos1 + 1 , pos2 1) )
1004 k c e l u l a a n t = Val ( Mid( c e l u la a n t er io r , pos2 + 1 , comprimento ) )
1005 Ex it For
1006 End I f
1007 Next
1008
1009 I f Cel ( xc e lu l aa n t , y c el u la a nt , k c e l u l a a n t ) >= numCC And tamCC = 1 Then
1010 Exi t Function
1011 El se
1012
1013 I f Cel ( x c e l u l a an t , y ce l ul a a n t , k c e l u l a a n t ) <= 1 Then
1014 contaBBcel = contaBBcel + 1
1015 End I f
1016
1017 Cel ( x ce l ul a an t , y ce l ul a a n t , k c e l u l a a n t ) = numCC
1018
1019 tamCC = tamCC + 1
1020 End I f
1021
1022 End I f
1023
1024 c e l u l a a n t e r i o r = Worksheets ( " dados " ) . C e l l s ( l i n h a c e l , 2 ) . Value
1025
1026 Loop
1027
1028 End Wit h
1029
1030 End Function
65
Para a determinação da conexão de poços × reservatório foram utilizadas as rotinas
listadas abaixo com a planilha "CONFIG"fornecendo os dados conforme figura C.2.
Figura C.2: Dados de configuração.
1 VERSION 1 .0 CLASS
2 BEGIN
3 MultiUse = 1 True
4 END
5 A tt r i b ut e VB_Name = " EstaPasta_de_trabalho "
6 A tt r i b ut e VB_GlobalNameSpace = F al s e
7 A tt r i b ut e VB_Creatable = F a ls e
8 A tt r i b ut e VB_PredeclaredId = True
9 A tt r i b ut e VB_E xposed = True
10 Option Base 1
11 Sub Auto ( )
12
13 Worksheets (" e st a t " ) . S el e c t
14 Range ("A3 : B1500 " ) . S e le c t
15 S el e ct i on . Cle arCo nten ts
16 Range ("H3 : H1500 " ) . S e le c t
17 S el e ct i on . Cle arCo nten ts
18
19
20 Worksheets (" c o n f ig " ) . S e l e c t
21 Range (" E13 " ) . S e le c t
22 S el e ct i on . Cle arCo nten ts
23 maxk = Round ( C e l l s (4 , 1 1 ). Value , 0) v a l o r ximo de K
24 mink = Round ( C e l l s (3 , 1 2 ). Value , 0) v a l o r mínimo de K
25 stp = C el l s ( 3 , 1 3) . Value v a l o r do st e p
26
27 I f st p = "" Then
28 st p = 0
29 End I f
30
31 Worksheets (" C onfig " ) . S e l e c t
32 C e l ls ( 7 , 3 ) . Value = "N"
33
34 v e r i f i c a s e quer c al cu l a r automaticamente
35
36 I f C e l l s ( 9 , 3 ) . Value = "S" Then
37 Ce l l s ( 8 , 3 ) . Value = "S"
38 El se
39 Ce l l s ( 8 , 3 ) . Value = "N"
40 End I f
41
42 For permK = maxk To mink Step s tp
43 Worksheets (" C onfig " ) . S e l e c t
44 Ce l l s ( 6 , 3 ) . Value = permK
66
45 C al l C l as se
46 Next
47
48 End Sub
49 Pu b li c S t a t i c Sub Perms ( )
50 Dim Z ( )
51
52 Lê ar q ui vo Perms . i n c ( p l an i l h a PERMS) do IMEX e grava ar q ui vo PERMS_A
53
54 Sh e et s ("Perms_A " ) . S e l ec t
55 Range ("A1 : IV65536 " ) . S e l e c t
56
57 Worksheets (" C onfig " ) . S e l e c t
58
59 di r e t = C e l l s ( 2 , 3 ) . Value
60
61 l im in f = C e l l s ( 6 , 3 ) . Value
62
63 p l a n i l h a = C e l l s ( 7 , 3 ) . Value
64
65 v e r i f i c a s e quer g rav ar també m na p l a n i l h a
66
67 I f p l a n i l h a = "S" Then
68 grava = True
69 El se
70 grava = Fa ls e
71 End I f
72
73 xx = C e ll s ( 3 , 3 ) . Value
74 yy = C e ll s ( 4 , 3 ) . Value
75 kk = C e ll s ( 5 , 3 ) . Value
76
77 ReDim Z ( kk yy xx )
78
79 Worksheets (" Perms " ) . S e l e c t
80
81 l a s t l i n h a = Worksheets ( " Perms " ). Range ( " A65536 " ) . End( xlUp ) .Row
82 u l t c o l u n a = 1
83
84 For q = 1 To l a s t l i n h a
85
86 l a s t c o l = Worksheets (" Perms " ) . Range ( C e l l s ( q , 1 ) , C e l l s ( q , 2 5 6 ) ) .End( xlToRight ) . Column
87
88 I f l a s t c o l = 256 Then
89 l a s t c o l = 1
90 End I f
91
92 I f l a s t c o l > ul t c ol u n a Then
93 u l t c o l u n a = l a s t c o l
94 End I f
95
96 Next
97
98 k = 1
99 ve z es = 1
100 pos = 1
101
102 re p e t e quando enc o nt ra notação C onde C é o número de r e p e t i ç õ e s
103
104 For N = 1 To l a s t l i n h a
105
106 For m = 1 To u l t c o lu n a
107
108 I f C e l l s (N, m) . Value <> "" Then
67
109 For W = 1 To Len ( C e l l s (N, m) . Value )
110 I f Mid( C e l l s (N, m) . Value , W, 1) = " " Then
111 pos = W + 1
112 ve z e s = Val ( L e f t ( C e l l s (N, m) . Value , W) )
113 End I f
114 Next
115 For r = 1 To ve z es
116 Z ( k ) = Val (Mid ( C e ll s (N, m) . Value , pos ) )
117 k = k + 1
118 Next
119 End I f
120 v ez es = 1
121 pos = 1
122 Next
123 Next
124
125 grava no a rqu iv o Perms_a . t xt
126
127 arq ui vo = d ir e t + "\Perms_A. t xt "
128
129 Open arq u iv o For Output As #1
130
131 Myrec = ""
132
133 t = 1
134 k = k 1
135 For j = 1 To k
136 Myrec = Z( j )
137 Pr in t #1, Myrec
138 Next
139
140 Clos e #1
141
142 I f gra v a Then
143
144
145 Worksheets (" Perms_A " ). S e l e c t
146
147 t = 1
148 For j = 1 To k
149 For P = 1 To 50
150 C e l ls ( j , P ) . Value = Z( t )
151 t = t + 1
152 Next
153 Next
154
155 End I f
156
157 End Sub
158 Pu b li c S t a t i c Sub Cl a s s e ( )
159 A tt r i b ut e Cl as s e . VB_ProcData . VB_Invoke_Func = " \ n14"
160 Dim P( )
161 Dim N( )
162 Dim NN( )
163
164 Gera Arquivo NULL . in c para o IMEX
165
166 Worksheets (" C onfig " ) . S e l e c t
167
168 di r e t = C e l l s ( 2 , 3 ) . Value
169
170 l im in f = C e l l s ( 6 , 3 ) . Value
171
172 p l a n i l h a = C e l l s ( 7 , 3 ) . Value
68
173
174
175 I f p l a n i l h a = "S" Then
176 grava = True
177 El se
178 grava = Fa ls e
179 End I f
180
181 xx = C e ll s ( 3 , 3 ) . Value
182 yy = C e ll s ( 4 , 3 ) . Value
183 kk = C e ll s ( 5 , 3 ) . Value
184
185 Sh e et s (" Nulos " ) . S el e c t
186 Range ("A1 : IV65536 " ) . S e l e c t
187 S el e ct i on . Cle arCo nten ts
188 Sh e et s (" B l oco s " ) . S el e c t
189 Range ("A1 : IV65536 " ) . S e l e c t
190 S el e ct i on . Cle arCo nten ts
191 Sh e et s (" QtdCel " ) . S e l e c t
192 Range ("A1 : IV65536 " ) . S e l e c t
193 S el e ct i on . Cle arCo nten ts
194 Sh e et s (" Poços " ) . S e le c t
195 Range ("D3 : IV500 " ) . S e l e c t
196 S el e ct i on . Cle arCo nten ts
197
198
199 ReDim P(xx , yy , kk )
200 ReDim N( xx , yy , kk )
201 ReDim NN( xx , yy , kk )
202
203 Worksheets ("Perms_A " ) . S e l e c t
204
205 r = 1
206 c = 1
207 c o n t a n u l l = 0
208
209 arq ui vo = d ir e t + "\Perms_A. t xt "
210
211 Open arq u iv o For Input As #1
212
213 For k = 1 To kk
214 For y = 1 To yy
215 For x = 1 To xx
216 Input #1, kmd
217 P( x , y , k ) = kmd
218 I f P(x , y , k ) < l i m i nf Then
219 N(x , y , k ) = 0
220 El se
221 N(x , y , k ) = 1
222 co n t a n u l l = c o nt a n u ll + 1
223 End I f
224 Next
225 Next
226 Next
227
228 Clos e #1
229
230 i n v e r t e p o si ç ão das c é l u l a s para a p l i c a ç ã o no CMC IMEX
231
232 ==============================================================================
233 For k = 1 To kk
234 For y = 1 To yy
235 For x = 1 To xx
236 NN( ( xx x + 1) , y , k ) = N( x , y , k )
69
237 Next
238 Next
239 Next
240 ==============================================================================
241
242
243 la s tA = Worksheets (" Es t at " ) . Range (" A65536 " ) . End( xlUp ) .Row + 1
244
245 Worksheets (" E sta t " ) . S e le c t
246
247 I f l i m in f = 0 Then
248 Ce l l s ( 1 , 9 ) . Value = co n t a n u l l
249 End I f
250
251 C e l ls ( lastA , 8 ) . Value = c o n t an u l l
252
253 I f gra v a Then
254 Worksheets (" Nulos " ) . S el e c t
255 l i n h a = 1
256 col una = 1
257 Ce l l s ( li nh a , col una ) . Value = "NULL ALL Numero de c e l u l a s A tiv a s = " & S tr ( c o n ta n u l l ) & " ;
258 Limite minimo de pe rm ea bi li da de (mD) = " & Str ( l i m i nf ) & " ; Porcentagem ocupada (%)=
259 " & Str ( 100 c o n t an u l l / ( kk xx yy ) )
260 l i n h a = l i n h a + 1
261 For k = 1 To kk
262 Ce l l s ( li nh a , col una ) . Value = " k = " & Str ( k )
263 l i n h a = l i n h a + 1
264 For y = 1 To yy
265 For x = 1 To xx
266 C e l l s ( l in ha , co lun a ) . Value = NN( x , y , k )
267 co lun a = col u na + 1
268 Next
269 l i n h a = li n h a + 1
270 co l una = 1
271 Next
272 Next
273 End I f
274
275 grava ar qui vo n u l l . in c para o IMEX
276
277 arq ui vo = d ir e t + "\ Null . i nc "
278
279 Open arq u iv o For Output As #1
280
281 Myrec = "NULL ALL Numero de c e l u l a s Ati vas = " & Str ( c o n t a n u l l ) & " ;
282 Limi t e minimo de pe rm ea bi li da de (mD) = " & Str ( l i m i nf ) & " ; Porcentagem ocupada (%)=
283 " & Str ( 100 c o n t an u l l / ( kk xx yy ) )
284 Pr in t #1, Myrec
285
286 For k = 1 To kk
287 Myrec = " k = " & S tr ( k )
288 Pr in t #1, Myrec
289 Myrec = ""
290 For y = 1 To yy
291 For x = 1 To xx
292 Myrec = Str (NN( x , y , k ) ) & " " & Myrec
293 Next
294 Pr in t #1, Myrec
295 Myrec = ""
296 Next
297 Next
298
299 Clos e #1
300
70
301 nada = Clas_C ( d i r e t , l i m i n f , xx , yy , kk , grava )
302
303 End Sub
304 Pu b li c S t a t i c Function Clas_C ( d i r e t , l i mi n f , xx , yy , kk , grava )
305 Dim P( )
306 Dim N( )
307
308
309 Gera ar qu ivo NULL. t x t para r o t i n a CAMADAS. dwg do ACAD
310
311 Worksheets ("Perms_A " ) . S e l e c t
312
313 ReDim P(xx , yy , kk )
314 ReDim N( xx , yy , kk )
315
316 r = 1
317 c = 1
318 c o n t a n u l l = 0
319
320 arq ui vo = d ir e t + "\Perms_A. t xt "
321
322
323 Open arq u iv o For Input As #1
324
325 For k = 1 To kk
326 For y = 1 To yy
327 For x = 1 To xx
328 Input #1, kmd
329 P( x , y , k ) = kmd
330 I f P(x , y , k ) < l i m i nf Then
331 N(x , y , k ) = 0
332 El se
333 N(x , y , k ) = 1
334 co n t a n u l l = c o nt a n u ll + 1
335 End I f
336 Next
337 Next
338 Next
339
340 Clos e #1
341
342 arq ui vo = d ir e t + "\ Null . tx t "
343
344 Open arq u iv o For Output As #1
345
346 For k = 1 To kk
347 For y = 1 To yy
348 For x = 1 To xx
349 Write #1, N( x , y , k )
350 Next
351 Next
352 Next
353
354 Clos e #1
355
356 nada = ContaBl ( d i r e t , l i mi n f , xx , yy , kk , grava )
357
358 End Function
359
360 Fu n c t i o n ContaBl ( d i r e t , l i mi n f , xx , yy , kk , grava )
361 Dim A( )
362 Dim B( )
363 Dim Cl ( )
364
71
365 CONEXÂO DE CÈLULAS
366
367 ReDim A( xx , yy , kk )
368 ReDim B( xx , yy , kk )
369 ReDim Cl ( xx , yy , kk )
370
371 x = 1
372 y = 1
373 k = 1
374
375 arq ui vo = d ir e t + "\ Null . tx t "
376
377 Open arq u iv o For Input As #1
378
379
380 Do While Not EOF( 1 )
381
382 Input #1, Num
383 A( x , y , k ) = Num
384 x = x + 1
385
386 I f x > xx T hen
387
388 x = 1
389 y = y + 1
390
391 I f y > yy Then
392
393 y = 1
394 k = k + 1
395
396 I f k > kk Then
397
398 Exi t Do
399
400 End I f
401
402 End I f
403
404 End I f
405
406 Loop
407
408 Clos e #1
409
410 For k = 1 To kk
411
412 For y = 1 To yy
413
414 For x = 1 To xx
415
416 B(x , y , k ) = 0
417 Cl ( x , y , k ) = 0
418
419 Next
420
421 Next
422
423 Next
424
425 grupo = 0
426
427 For k = 1 To kk
428
72
429 For y = 1 To yy
430
431 For x = 1 To xx
432
433 I f A( x , y , k ) = 1 Then
434
435 grupo = grupo + 1
436 B( x , y , k ) = grupo
437 Cl ( x , y , k ) = Cl (x , y , k ) + 1
438
439 c e lu la a nt e r io r
440
441 I f x 1 >= 1 Then
442
443 I f A( x 1 , y , k ) <> 0 And B( x 1 , y , k ) <> B(x , y , k ) Then
444
445 Cl (x , y , k ) = Cl (x , y , k ) + Cl ( x 1 , y , k )
446 n ovoC = Cl (x , y , k )
447
448 I f B( x 1 , y , k ) > B( x , y , k ) Then
449 antigoB = B( x , y , k )
450 novoB = B( x 1 , y , k )
451 E l s e
452 antigoB = B( x 1 , y , k )
453 novoB = B( x , y , k )
454 End I f
455
456 grupo = grupo 1
457
458 For P = 1 To kk
459
460 For l = 1 To yy
461
462 For c = 1 To xx
463
464 I f B( c , l , P) = antigoB Or B( c , l , P) = novoB Then
465
466 B( c , l , P) = antigoB
467 Cl ( c , l , P) = n ovoC
468
469 End I f
470
471 Next
472
473 Next
474
475 Next
476
477 End I f
478
479 End I f
480
481 l i n h a a n t e r i or
482
483 I f y 1 >= 1 Then
484
485 I f A( x , y 1 , k) <> 0 And B( x , y 1 , k ) <> B(x , y , k ) Then
486
487 Cl ( x , y , k ) = Cl ( x , y , k ) + Cl (x , y 1 , k )
488 n ovoC = Cl (x , y , k )
489
490 I f B( x , y 1 , k ) > B( x , y , k ) Then
491 antigoB = B( x , y , k )
492 novoB = B( x , y 1 , k )
73
493 E l s e
494 antigoB = B( x , y 1 , k )
495 novoB = B( x , y , k )
496 End I f
497
498 grupo = grupo 1
499
500 For P = 1 To kk
501
502 For l = 1 To yy
503
504 For c = 1 To xx
505
506 I f B( c , l , P) = antigoB Or B( c , l , P) = novoB Then
507
508 B( c , l , P) = antigoB
509 Cl ( c , l , P) = n ovoC
510
511 End I f
512
513 Next
514
515 Next
516
517 Next
518
519 End I f
520
521 End I f
522
523 a acima pl a no s u p e r i o r
524
525 I f k 1 >= 1 Then
526
527 I f A( x , y , k 1) <> 0 And B( x , y , k 1) <> B( x , y , k ) Then
528
529 Cl ( x , y , k ) = Cl ( x , y , k ) + Cl (x , y , k 1)
530 n ovoC = Cl (x , y , k )
531
532 I f B( x , y , k 1) > B(x , y , k ) Then
533 antigoB = B( x , y , k )
534 novoB = B( x , y , k 1)
535 E l s e
536 antigoB = B( x , y , k 1)
537 novoB = B( x , y , k )
538 End I f
539
540 grupo = grupo 1
541
542 For P = 1 To kk
543
544 For l = 1 To yy
545
546 For c = 1 To xx
547
548 I f B( c , l , P) = antigoB Or B( c , l , P) = novoB Then
549
550 B( c , l , P) = antigoB
551 Cl ( c , l , P) = n ovoC
552
553 End I f
554
555 Next
556
74
557 Next
558
559 Next
560
561 End I f
562
563 End I f
564
565 End I f
566
567 Next
568
569 Next
570
571 Next
572
573 I f gra v a Then
574
575 Worksheets (" Blo cos " ) . S e l e c t
576
577 l i n h a = 1
578 col una = 1
579
580 For k = 1 To kk
581
582 C e l l s ( li nh a , 1 ) . Value = "k = " & Str ( k )
583 l i n h a = li n h a + 1
584
585 For y = 1 To yy
586
587 For x = 1 To xx
588
589 C e l l s ( l in ha , co lun a ) . Value = B( x , y , k )
590 co lun a = col u na + 1
591
592 I f col una > xx Then
593 c o lun a = 1
594 End I f
595
596
597 Next
598
599 l i n h a = l i n h a + 1
600
601 Next
602
603 Next
604
605
606 Worksheets (" QtdCel " ) . S e l e c t
607
608 l i n h a = 1
609 col una = 1
610
611 For k = 1 To kk
612
613 C e l l s ( li nh a , 1 ) . Value = "k = " & Str ( k )
614 l i n h a = li n h a + 1
615
616 For y = 1 To yy
617
618 For x = 1 To xx
619
620 C e l l s ( l in ha , co lun a ) . Value = Cl (x , y , k )
75
621 co lun a = col u na + 1
622
623 I f col una > xx Then
624 c o lun a = 1
625 End I f
626
627 Next
628
629 l i n h a = l i n h a + 1
630
631 Next
632
633 Next
634 End I f
635
636 Worksheets (" C onfig " ) . S e l e c t
637
638 pocos = C e ll s ( 8 , 3 ) . Value
639
640 v e r i f i c a s e pre e nche p l a n i l h a de conexão dos poços
641
642 I f p ocos = "S" Then
643
644 Worksheets (" Poços " ) . S e l e c t
645
646 Dim pcx ( )
647 Dim pcy ( )
648
649 l a s t r o w = Worksheets ( " Poços " ) . Range (" A65536 " ) . End( xlUp ) .Row
650
651 ReDim pcx ( l a st r ow )
652 ReDim pcy ( l a st r ow )
653
654 For i = 3 To l a st r ow
655
656 pcx ( i ) = C e l l s ( i , 2 ). Value
657 pcy ( i ) = C e l l s ( i , 3 ). Value
658
659 Next
660
661
662 For t = 3 To l a st r ow
663
664 For k = 1 To kk
665
666 C e l ls ( t , k + 3 ). Value = B( pcx ( t ) , pcy ( t ) , k )
667
668 Next
669
670 Next
671 I f Worksheets ( " Confi g " ) . C e l ls ( 8 , 3 ) . Value = "S" Then
672 C al l Conex ( l im i nf )
673 End I f
674 I f Worksheets ( " Confi g " ) . C e l ls ( 9 , 3 ) . Value = "S" Then
675 C al l Bt
676 End I f
677
678 End I f
679
680 Worksheets (" E sta t " ) . S e le c t
681
682 maior = Cl (1 , 1 , 1)
683
684 For k = 1 To kk
76
685 For y = 1 To yy
686 For x = 1 To xx
687
688 I f Cl ( x , y , k ) > maior Then
689 maior = Cl (x , y , k )
690 End I f
691 Next
692 Next
693 Next
694
695 la s tA = Worksheets (" Es t at " ) . Range (" A65536 " ) . End( xlUp ) .Row + 1
696
697 C e l ls ( lastA , 1 ) . Value = l i m i n f
698 C e l ls ( lastA , 2 ) . Value = maior
699
700 End Function
701
702 Sub Conex ( l i m in f )
703 Dim PC( )
704 Dim PP( )
705
706 Worksheets (" Poços " ) . S e l e c t
707
708 l a s t l i n h a = Worksheets ( " Poços " ) . Range (" A65536 " ). End( xlUp ) .Row
709 l a s t c o l = Worksheets ( " Poços " ) . Range ( C e l l s ( 3 , 1 ) , C e l l s ( 3 , 2 5 6 ) ) . End( xlToRight ) . Column
710
711 tudo = l a s t l i n h a
712
713 ReDim PC( tudo )
714 ReDim PP( tudo )
715
716
717 For zeraPC = 1 To tudo
718 PC( zeraPC ) = ""
719 Next
720
721 Worksheets (" Conex " ) . S e le c t
722
723 C e l ls . S e l e c t
724 Se l ec t io n . Cl earC onte nts
725
726 For q = 3 To l a s t l i n h a
727 Ce l l s ( 1 , q 1 ) . Value = Worksheets ( " Poços " ) . C e l ls ( q , 1 ) . Value
728 Next
729
730 Worksheets (" Poços " ) . S e l e c t
731
732 contCol = 2
733
734 For l i n = 3 To l a s t l i n h a
735
736 contaPC = 1
737
738 For c o l = 4 To l a s t c o l
739
740 Worksheets (" Poços " ) . S el e c t
741
742 blocoK = C e l l s ( l i n , c o l ) . Value
743 poçoObs = C e l l s ( l i n , 1 ) . Value
744 l i n h a pe s q = l i n + 1
745 gravaPC = True
746
747
748 For l i np = 1 To l a s t l i n h a
77
749
750
751 For c o lp = 4 To l a s t c o l
752
753 I f poçoObs = C e l l s ( l i np , 1 ) . Value Then
754 Ex i t For
755 End I f
756
757 I f C e l l s ( l i np , c o l p ) . Value = blocoK And blocoK <> 0 Then
758
759 poçoK = C e l l s ( l i n p , 1 ) . Value
760
761 For pesqPC = 1 To tudo
762
763 I f PC( pesqPC ) = poçoK Then
764 gravaPC = Fa ls e
765 Exi t For
766 End I f
767
768 Next
769
770 I f gravaPC Then
771 PC( c ontaPC ) = poçoK
772 PP( contaPC ) = l i mi nf
773 contaPC = contaPC + 1
774 End I f
775
776 End I f
777 Next
778 gravaPC = True
779 Next
780
781 Next
782
783 Worksheets (" Conex " ) . S e le c t
784
785 For escPC = 1 To contaPC
786
787 zaz = PP( escPC )
788 yay = PC( escPC )
789 C e l l s ( escPC + 1 , contCol ) . Value = PC( escPC ) + "" + S tr (PP( escPC ))
790
791 Next
792
793 contCol = c o ntCol + 1
794
795 For zeraPC = 1 To tudo
796 PC( zeraPC ) = ""
797 Next
798
799 Next
800
801 End Sub
802 Sub Bt ()
803
804 Worksheets (" c o n f ig " ) . S e l e c t
805 pc1 = C e l l s ( 1 3 , 3 ) . Value
806 pc2 = C e l l s ( 1 4 , 3 ) . Value
807 kl i m = C e l l s ( 6 , 3 ) . Value
808 achou1 = Fal se
809 achou2 = Fal se
810
811 Worksheets (" Conex " ) . S e le c t
812
78
813 l a s t c o l = Worksheets (" Poços " ) . Range ( C e l l s (3 , 1 ) , C el l s ( 3 , 2 5 6 ) ) . End( xlToRight ) . Column
814
815 l a s t c o l = Worksheets ( " Conex " ) . Range ( C e l l s (1 , 2 ) , C el l s ( 1 , 2 5 6 ) ) . End( xlToRight ) . Column
816
817 For cont = 1 To l a s t c o l
818 I f C e l l s ( 1 , cont ) . Value = pc1 Then
819 achou1 = True
820 c o l p c1 = cont
821 End I f
822 I f C e l l s ( 1 , cont ) . Value = pc2 Then
823 achou2 = True
824 c o l p c2 = cont
825 End I f
826 Next
827
828 I f Not achou1 Then
829 nada = Ms gBox (" Poço 1 não l o c a l i z a d o " , v bC r i t i c a l , "Conexao e n tr e Poços ")
830 End
831 End I f
832 I f Not achou2 Then
833 nada = Ms gBox (" Poço 2 não l o c a l i z a d o " , v bC r i t i c a l , "Conexao e n tr e Poços ")
834 End
835 End I f
836
837 l a s t l i n h a = Worksheets ( " Conex " ) . Range ( C e ll s ( 1 , c ol p c 1 ) , C e l l s ( 65 536 , c o l p c1 ) ) . End( xlDown ) . Row
838 End ( xlUp ) .Row
839
840 cen ect ou = Fa ls e
841
842 For cont = 1 To l a s t l i n h a
843
844 I f C e l l s ( cont , c o lp c1 ) . Value = pc2 And Worksheets (" Conf i g " ) . C e l l s ( 13 , 5 ) . Value = "" Then
845 Worksheets (" c o n f i g " ) . S el e c t
846 C e l l s (1 3 , 5 ) . Value = "OK Klim (mD) = " & Str ( klim )
847 t e x t o = "Conexão e n t re " & pc1 & " e " & pc2 & " e st a be l ec i da com K l im = " & S tr ( klim )
848 nada = MsgBox( t exto , vbOKOnly , "Conexão e n t r e Poços ")
849 End I f
850
851 Next
852
853
854
855 End Sub
79
Referências Bibliográficas
[1] P.D. Fleming, An Interpretation of the Petrophysical Properties of Reservoir Rocks
Based on Percolation Theory, SPE12515 - (1983).
[2] Allen G. Hunt, Percolation Theory for Flow in Porous Media - Lecture Notes in
Physics, Editora Springer - (2005)
[3] P.R.King, Percolation Theory - Imperial College - (2002).
[4] P.J.Flory, Principles of Polymer Chemistry - Cornell University Press - (1953).
[5] Broadbent S.R., e Hammersley J.M., Percolation processes I. Crystals and mazes,
Cambridge Philosophical Society, (1957).
[6] Fisher, Michael E. e Essam, John W. Some Basic Definitions in Graph The-
ory.,Amerucan Physical Society,(1970).
[7] Dietrich Stauffer e Amnon Aharony, Introduction to Percolation Theory - Revised
Second Edition, CRC Press - (1992-1994)
[8] J.E. Freitas, Estudos de Alguns Sistemas Complexos, Tese de Doutorado - UFRN -
(2002)
[9] P.R. Nurafza, P.R.King e M. Masihi, Imperial College Fast Estimation Of Conectivity
in Fractured Reservoir Using Percolation Theory, SPE (2007).
[10] Ewing, R.P. e Gupta, Modeling Percolation Properties of Random Media Using a
Domain Network, Water Resources Research, (1993).
[11] Thompson, A.H., Hatz, A.J., e Krohn, C.E., The Microgeometry and Transport Prop-
erties of Sedimentary Rocks, Advances in Physics, (1987).
80
[12] Silliman, S.E., The Influence of Grid discretization on the Percolation Probability
Within Discrete Random Fields, Journal of Hydrology, (1990).
[13] Balberg, I. and Binenbaum, Cluster Structure and Conductivity of three-dimensional
continuum systems, Physical Review, (1985).
[14] M.C. Salomão, Analysis of Flow in Spatially Correlated Systems by Applying The
Percolation Theory, SPE, (1997).
[15] M.A.Barrufet, R.J.White Jr., A waterflood Model Based Upon Percolation Theory
Concepts, SPE, (1994);
[16] R.Baigorria, J.L.Pousa Flow in Porous Media, SPE, (1994);
[17] D. Wilkinson and J. F. Willemsen. Invasion percolation: a new form of percolation
theory. J. Phys. A, (1983).
[18] V.I.Selyakov and V.V. Kadet, Percolation Models for Transport in Porous Media -
With Applications to Reservoir Engineering, Kluwer Academic Publishers -(1996).
[19] Brian Berkowitz e Robert P. Ewing, Percolation Theory and Network Modeling Ap-
plications in soil Physics, Kluwer Academic Publishers -(1998).
[20] P.R. Nurafza, P.R.King e M. Masihi, Imperial College, Facies Connectivity Modelling:
Analysis and Field Study - SPE100333 - (2006).
[21] Bryant, S.L., King, P.R. e Mellor, D.W.,Network Model Evaluation of Permeability
and Sapacil Correlation in a Real Random Sphere Packing, Transport in Porous
Media (1993).
[22] Sahimi, M e Imdakm, A.O., The Effect of Morphological Disorder on Hydrodynamic
Dispersion in Flow Through Porous Media, Journal of Physics A, (1988).
[23] P.R.King et al., The Connectivity and Conductivity of Overlapping Sandbodies in
North Sea Oil & Gas Reservoir, Artigo - Imperial College - (1990).
[24] R. Lenormand e C. Zarcone. Invasion percolation in and etched network: Measure-
ment of a fractal dimension. Phys. Rev. Lett., (1985).
81
[25] Stefan Schwarzer, Shlomo Havlin. Percolation with and without Trapping: Shortest
Path and Distributions.,Universität Stuttgart, Germany, (1999).
82
Livros Grátis
( http://www.livrosgratis.com.br )
Milhares de Livros para Download:
Baixar livros de Administração
Baixar livros de Agronomia
Baixar livros de Arquitetura
Baixar livros de Artes
Baixar livros de Astronomia
Baixar livros de Biologia Geral
Baixar livros de Ciência da Computação
Baixar livros de Ciência da Informação
Baixar livros de Ciência Política
Baixar livros de Ciências da Saúde
Baixar livros de Comunicação
Baixar livros do Conselho Nacional de Educação - CNE
Baixar livros de Defesa civil
Baixar livros de Direito
Baixar livros de Direitos humanos
Baixar livros de Economia
Baixar livros de Economia Doméstica
Baixar livros de Educação
Baixar livros de Educação - Trânsito
Baixar livros de Educação Física
Baixar livros de Engenharia Aeroespacial
Baixar livros de Farmácia
Baixar livros de Filosofia
Baixar livros de Física
Baixar livros de Geociências
Baixar livros de Geografia
Baixar livros de História
Baixar livros de Línguas
Baixar livros de Literatura
Baixar livros de Literatura de Cordel
Baixar livros de Literatura Infantil
Baixar livros de Matemática
Baixar livros de Medicina
Baixar livros de Medicina Veterinária
Baixar livros de Meio Ambiente
Baixar livros de Meteorologia
Baixar Monografias e TCC
Baixar livros Multidisciplinar
Baixar livros de Música
Baixar livros de Psicologia
Baixar livros de Química
Baixar livros de Saúde Coletiva
Baixar livros de Serviço Social
Baixar livros de Sociologia
Baixar livros de Teologia
Baixar livros de Trabalho
Baixar livros de Turismo