UNIVERSIDADE FEDERAL FLUMINENSE CENTRO TÉCNOLÓGICO
ESCOLA DE ENGENHARIA DEPARTAMENTO DE ENGENHARIA QUIMICA E DE PETROLEO
André Luis Reys de Mattos
Aplicação de programação matemática na estruturação e construção de simulador de
reservatórios.
Niterói – RJ, Brasil
2017
André Luis Reys de Mattos
Aplicação de programação matemática na estruturação e construção de simulador de reservatórios.
Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Engenharia de Petróleo da Escola de Engenharia da Universidade Federal Fluminense, como requisito parcial para obtenção do Grau de Bacharel em Engenharia de Petróleo.
Orientadores: Arturo Rodrigo Ferreira Pardo
João Felipe Mitre de Araujo
Niterói – RJ, Brasil
2017
Ficha Catalográfica elaborada pela Biblioteca da Escola de Engenharia e Instituto de Computação da UFF
M444 Mattos, André Luis Reys de
Aplicação de programação matemática na estruturação e
construção de simulador de reservatórios / André Luis Reys de
Mattos. – Niterói, RJ : [s.n.], 2017.
70 f.
Projeto Final (Bacharelado em Engenharia de Petróleo) –
Universidade Federal Fluminense, 2017.
Orientadores: Arturo Rodrigo Ferreira Pardo, João Felipe Mitre
de Araujo.
1. Engenharia de reservatório. 2. Fortran (Linguagem de
programação). 3. Programação matemática. I. Título.
CDD 622.3382
André Luis Reys de Mattos
Aplicação de programação matemática na estruturaçãoe construção de simulador de reservatórios.
Trabalho de Conclusão de Curso apresentado aoCurso de Graduação em Engenharia de Petró-leo da Escola de Engenharia da UniversidadeFederal Fluminense, como requisito parcial paraobtenção do Grau de Bacharel em Engenhariade Petróleo
Aprovado em Niterói - RJ, Brasil, 13 de julho de 2017:
Arturo Rodrigo Ferreira Pardo, D. SC.Orientador
João Felipe Mitre de Araujo, D. SC.Orientador
Elson Antonio do Nascimento, D. SC.
João Crisósthomo de Queiroz Neto, D. SC.
Niterói - RJ, Brasil2017
A João Pedro, Cláudia e Sérgio Mattos,
a melhor família que qualquer filho poderia desejar
Agradecimentos
Os agradecimentos principais são direcionados a minha família, que sempre esteveao meu lado nos momentos mais difíceis, me encorajando e não me deixando ser levado porpensamentos ruins, a Julia Rocha, por todos os momentos de desespero nos quais me acolheue me trouxe uma luz e a todos os meus amigos companheiros de jornada, dentre os quais sedestacam Melissa, Mayara, Allicia, Pedro e Arnaldo.
Agradecimentos especiais são direcionados a todo o Departamento de Engenharia dePetróleo da Universidade Federal Fluminense, assim como o Petroleum Engineering Departmentda Montana Tech of The University of Montana, cuja maior contribuição foi o conhecimento einspiração necessários para a realização deste.
Agradeço ainda a meus orientadores, Dr. Arturo Rodrigo Ferreira Pardo e Dr. , por todoo suporte e orientação sem os quais o presente trabalho não passariam de notas perdidas em umcaderno.
"Trabalhe até que não precise mais se apresentar."
Autor Desconhecido
Resumo
Este trabalho visa o desenvolvimento e construção de um simulador de reservatórios Black-Oil,totalmente a partir de códigos abertos ao público e de livre utilização. Primeiro faz-se umbreve resumo de Engenharia de Reservatórios, passando pelos tópicos mais relevantes. Uma vezconcluído, segue para desenvolvimento da equação da continuidade, adaptando-a a meios porosose discretizando-a entre coordenadas espaciais e temporais. Ao final, é realizada a construçãode uma subrotina em FORTRAN, capaz de executar estes cálculos em repetição e chegar a umresultado efetivo.
Palavras-chaves: Simulação de Reservatórios. FORTRAN. Continuidade. Engenharia de Reser-vatórios.
Abstract
This study aims to deduce and develop a Black Oil Reservoir Simulator, directly from open-source codes. It begins with a short recapitulation of Reservoir Engineering, from the maindefinitions to the most relevant topics. Once concluded, the next step is the development of thecontinuity equation, discretizing it between spacial end time coordinates. Finnaly, a FORTRANsubroutine capable of apply the model in loops and achieve an effective result is written .
Key-words: Reservoir Simulation. FORTRAN. Continuity Equation. Reservoir Engineering.
Lista de ilustrações
Figura 2.1 – Densidade vs Pressão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Figura 2.2 – Gráfico de Standing-Katz . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Figura 2.3 – Fator Volume-Formação vs Pressão . . . . . . . . . . . . . . . . . . . . . . 17Figura 2.4 – Viscosidade e Razão Gás-óleo vs Pressão . . . . . . . . . . . . . . . . . . . 19Figura 2.5 – Pressão Capilar vs Saturação . . . . . . . . . . . . . . . . . . . . . . . . . 21Figura 2.6 – Fluxo mássico entre um bloco e seu entorno. . . . . . . . . . . . . . . . . . 26Figura 3.7 – Organização dos blocos no modelo estudado . . . . . . . . . . . . . . . . . 31Figura 4.8 – Modelo de output contendo informações de cada bloco do reservatório . . . 39Figura 4.9 – Modelo de output contendo informações do reservatório como um todo . . . 39Figura 4.10–Interpretação das informações extraídas do programa. Pressão de óleo. . . . 40Figura 4.11–Interpretação das informações extraídas do programa. Saturação de óleo. . . 41Figura 4.12–Interpretação das informações extraídas do programa. Pressão de óleo. Reser-
vatório convencional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Figura 4.13–Interpretação das informações extraídas do programa. Saturação de óleo.
Reservatório convencional. . . . . . . . . . . . . . . . . . . . . . . . . . . 43Figura 4.14–Interpretação das informações extraídas do programa. Pressão de óleo. Reser-
vatório com ausência de capa de gás. . . . . . . . . . . . . . . . . . . . . . 44Figura 4.15–Interpretação das informações extraídas do programa. Saturação de óleo.
Reservatório com ausência de capa de gás. . . . . . . . . . . . . . . . . . . 45Figura 4.16–Interpretação das informações extraídas do programa. Pressão de óleo. Reser-
vatório com quantidade reduzida de água de formação. . . . . . . . . . . . 46Figura 4.17–Interpretação das informações extraídas do programa. Saturação de óleo.
Reservatório com quantidade reduzida de água de formação. . . . . . . . . 47
Sumário
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 CONCEITOS BÁSICOS DE ENGENHARIA DE RESERVATÓRIOS . 122.1 Propriedades da Rocha Reservatório . . . . . . . . . . . . . . . . . 122.2 Propriedades dos Fluidos de Reservatório . . . . . . . . . . . . . . 132.3 Interações Fluido-Rocha e Fluido-Fluido . . . . . . . . . . . . . . . 202.4 Comportamento dos Fluidos no Reservatório . . . . . . . . . . . . 23
3 DESENVOLVIMENTO TEÓRICO . . . . . . . . . . . . . . . . . . . . 283.1 Equações de Fluxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.2 Influência da Pressão Capilar . . . . . . . . . . . . . . . . . . . . . . 293.3 Discretizando as Equações . . . . . . . . . . . . . . . . . . . . . . . . 313.4 Representação dos Poços . . . . . . . . . . . . . . . . . . . . . . . . 34
4 FUNCIONAMENTO DO SIMULADOR . . . . . . . . . . . . . . . . . 364.1 A Linguagem FORTRAN . . . . . . . . . . . . . . . . . . . . . . . . . . 364.2 Mecanismo de Resolução . . . . . . . . . . . . . . . . . . . . . . . . . 374.3 Funcionamento Básico do Programa . . . . . . . . . . . . . . . . . . 374.4 Estudos de Caso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.4.1 Caso 1 - Reservatório convencional . . . . . . . . . . . . . . . . . . . . 424.4.2 Caso 2 - Reservatório com ausência de capa de gás . . . . . . . . . . 444.4.3 Caso 3 - Reservatório com quantidade reduzida de água de formação 44
5 CONCLUSÃO E SUGESTÕES PARA TRABALHOS FUTUROS . . . 48
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
APÊNDICES 50
APÊNDICE A – CÓDIGO DESENVOLVIDO . . . . . . . . . . . . . . 51
APÊNDICE B – INPUT UTILIZADO NOS ESTUDOS DE CASO . . 69
11
1 Introdução
Com o advento da revolução digital, a simulação de reservatório vem continuamenteganhando espaço no mercado de óleo e gás. Simular não é mais uma questão de previsão, mascada vez mais uma questão de estratégia. Novas descobertas de reservatórios podem envolvercondições cada vez pior de escoabilidade, com permeabilidades baixas, grandes falhamentos,produções exageradas de água, entre outros. Um método de simulação corretamente efetuadopode (e geralmente consegue) propiciar estratégias de desenvolvimento respeitando cada vezmais limites econômicos e ambientais.
Graças a essa importância, empresas vêm desenvolvendo dia a dia softwares cada vezmais potentes e eficientes, chegando em questão de minutos a resultados que, sem o uso datecnologia, nunca seriam alcançados. Por questões comerciais, entretanto, esses softwares sãoinvioláveis, atuando como caixas obscuras de processamento, onde entram os dados, saem osresultados.
1.1 Objetivo
Este estudo tem o intuito de retornar às origens e deduzir, a partir das definições maisbásicas, equações funcionais para o desenho de um simulador de reservatórios eficiente e decódigo aberto. O programa desenvolvido terá uma estrutura modular, permitindo sua fáciladaptação às mais diversas situações e assim criando um ambiente um pouco mais amigável paraaqueles que queiram entender o funcionamento de suas versões comerciais.
Antes do desenvolvimento, entretanto, é necessário uma breve revisão de conceitosbásicos da engenharia de reservatórios, como propriedades das rochas, propriedades dos flui-dos, interações entre o fluido e a rocha e seu comportamento em um reservatório. Após, serárealizado um desenvolvimento intensivo de equações de fluxo, levando em conta aspectos comoposicionamento espacial e temporal, condições de contorno e assunções.
12
2 Conceitos Básicos de Engenharia deReservatórios
Como o próprio nome propõe, a Simulação de Reservatórios é um estudo da como secomporta um reservatório sujeito às varias alterações que podem ser feitas pelo homem oupela natureza ao longo de sua vida. Uma vez que este trabalho se dedica principalmente asimulações onde não há reação química, não há troca de energia entre as diferentes fases etodas as propriedades são contínuas e descritíveis, o estudo se restringirá apenas aos conceitosessenciais para o desenvolvimento de uma solução.
2.1 Propriedades da Rocha Reservatório
Porosidade
Principalmente utilizada na medição do volume de fluido no reservatório, a porosidade éuma das mais importantes propriedades a serem estudadas. Segundo Rosa (2006), a porosidadeé definida como sendo a relação entre o volume de vazios de uma rocha e o volume total damesma, ou seja:
φ =VvVt
(2.1)
Onde:
φ representa a porosidade
Vv representa o volume de vazios
Vt representa o volume total
Permeabilidade
Enquanto a porosidade mede a capacidade de armazenamento da rocha, outra informaçãode vital importância é a Permeabilidade. Análoga ao inverso da resistência de um circuito elétrico,Rosa (2006) define permeabilidade como uma medida da capacidade de um meio poroso de sedeixar atravessar por fluidos. Os estudos mais conclusivos sobre permeabilidade foram feitos porHenry Darcy em 1856 e serão abordados na seção 2.4.
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 13
2.2 Propriedades dos Fluidos de Reservatório
Tipos de fluidos
Fluidos em geral podem ser considerados como incompressíveis, compressíveis e leve-mente compressíveis, a depender em como se comportam com o variar da pressão. Um fluidoincompressível, como sugerido pelo nome, não sofre alterações com o variar da pressão, man-tendo sempre o mesmo volume. Fluidos compressíveis, por sua vez, sofrem altas variações devolume, como demonstrado na Figura (2.1) (ERTEKIN, 2001).
Figura 2.1 – Densidade vs Pressão
Fonte: Ertekin (2001)
Geralmente, a água é considerada como incompressível, o gás como compressível e oóleo negro1 como levemente compressível. Existe ainda o óleo com gás em solução (óleo cruou óleo vivo), cujo comportamento é distinto devido a solubilização do gás com o aumentar dapressão.1 Entende-se como óleo negro, óleo morto ou Black Oil o óleo que já dissipou todo o gás em solução.
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 14
Pressão de bolha
Segundo Ahmed (2010), a pressão de bolha de um sistema de hidrocarbonetos é definidacomo a mais alta pressão na qual uma bolha de gás é liberada do óleo. Essa importante proprie-dade pode ser medida experimentalmente através de um teste PVT flash ou estimada com o usode correlações. Neste trabalho será considerada como um valor conhecido do sistema.
Compressibilidade isotérmica
De acordo com Ertekin (2001), a compressibilidade isotérmica de um fluido é definidacomo a mudança volumétrica relativa de uma determinada massa sujeita a uma alteração depressão em condições de temperatura constante. A compressibilidade pode, matematicamente,ser definida como:
ci = − 1
V
∂V
∂p|T (2.2)
Em termos de massa específica, sabendo que ρ = mV
, a expressão resultante então é:
ci = −1
ρ
∂ρ
∂p|T (2.3)
Fator z de compressibilidade do gás
Gás ideal
Segundo Rosa (2006), um gás ideal é um fluido hipotético que obedece a 3 condiçõesespecíficas:
- O volume ocupado pelas moléculas é insignificante se comparado ao volume total dofluido.
- Não existem quaisquer forças intermoleculares atrativas ou repulsivas, seja com o própriofluido, seja com as paredes do recipiente.
- As colisões entre as moléculas são perfeitamente elásticas.
Uma vez seguidas essas condições, o gás pode ser considerado ideal e seu comportamentopode ser previsto, em unidades absolutas, pela Equação (2.4), também conhecida como Equaçãode Estado ou Lei dos Gases Ideais.
PV = nRT (2.4)
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 15
Gás real
Ainda que a grande maioria dos gases não siga as condições específicas dos gases ideais,quando em baixa temperatura e baixa pressão são fiéis a essa relação. Para os que não seguemesse modelo, existe um fator de correção chamado fator z de compressibilidade do gás ou, eminglês, z-factor. A equação (2.5) mostra a inserção deste fator.
PV = znRT (2.5)
Dependente de variáveis como temperatura e pressão, associadas a propriedades dasubstância, como temperatura e pressão críticas, esse fator tem comportamento anômalo. Apesarda existência de correlações bem precisas, como Peng-Robinson, até hoje, o método do Gráficode Standing-Katz (Figura 2.2) é ainda muito utilizado.
Razão gás-óleo
Também conhecida como Razão de Solubilidade do Gás, a Razão gás-óleo (Rs) ouGas-Oil Ratio (GOR) representa a quantidade de gás que se desprende do óleo no caminho domesmo entre o reservatório e a superfície (MCCAIN, 1990). Essa razão então é definida emtermos das quantidades de gás e óleo que surgem durante a produção.
Rs =volume de gás produzido sob condições padrãovolume de óleo produzido sob condições padrão
(2.6)
Na ausência de dados de laboratório, Terry e Rogers (2014) sugerem a utilização decorrelações. Standing, em seus estudos, concluiu que poderia estimar a Razão gás-óleo a partirda temperatura e da pressão do reservatório, juntamente a gravidade específica do gás e dagraduação API do óleo. Beggs apresenta a correlação de Standing em formato de equação eválida para pressões abaixo da pressão de bolha como (BRADLEY, 1987):
Rs = γg
( p
18 ∗ 10(yg)
)1.204
(2.7)
Onde:
yg = 0.00091T − 0.125ρAPI
Fator volume-formação
Segundo Rosa (2006), fator volume-formação é a relação entre o volume que o fluidoocupa em uma determinada condição de temperatura e pressão e o volume que este mesmo fluido
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 16
Figura 2.2 – Gráfico de Standing-Katz
Fonte: Katz (1959)
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 17
ocupa em condições padrão. Portanto, para uma fase genérica n pode-se escrever a equação (2.8)
Bn =VnV0,n
(2.8)
Fator volume-formação de gás
Substituindo a equação (2.5) na equação (2.8) e assumindo que, para condições padrão,z ∼= 1 pode-se então escrever a equação (2.9).
Bg =P0ZT
T0P(2.9)
Fator volume-formação de óleo
Como visto na seção Razão gás-óleo, até atingir o ponto de bolha, o gás se dissolve noóleo. Essa dissolução faz com que o óleo, entre a pressão padrão e o ponto de bolha, aumentede volume com o aumentar da pressão. Acima da pressão de bolha, o aumento da pressão fazcom que o óleo e o gás nele dissolvido se comprimam, uma vez que não há mais dissolução.Como podemos notar na figura (2.3), entre a pressão de bolha e a pressão inicial, o Bo possuicomportamento linear.
Figura 2.3 – Fator Volume-Formação vs Pressão
Fonte: Rosa (2006)
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 18
Viscosidade
Segundo Ertekin (2001), viscosidade de um fluido é a medida da facilidade de um fluidode escoar como resultado de um gradiente de pressão aplicado. Para fluidos com gás diluído, asmoléculas se encontram afastadas e não oferecem muita resistência. Em contraste, um fluidomais denso oferece uma alta resistência ao escoamento. A viscosidade é geralmente estimadaem função de temperatura e pressão. Neste estudo porém, serão desconsideradas quaisquerinfluências de variação de temperatura, visto que o modelo utilizado somente é válido paraprocessos isotérmicos.
Viscosidade de um óleo
Em casos onde não é possível a análise laboratorial, existem inúmeras maneiras paraestimar a viscosidade de um óleo. Um dos métodos mais utilizados é :
Passo 1 - Estimar a viscosidade do óleo morto através da correlação de Beggs-Robinson.
µod = 10A(T−460)−1.163 − 1.0 (2.10)
Onde:
A = 103.0324−0.202023API
Passo 2 - Estimar a viscosidade para pressões menores que a pressão de bolha através da correlaçãode Beggs-Robinson.
µob = a(µod)b (2.11)
Onde:
a = 10.715(Rs+ 100)−0.515
b = 5.44(Rs+ 150)−0.338
Passo 3 - Corrigir a viscosidade do óleo para pressões maiores que a pressão de bolha através dacorrelação de Khan.
µo = µob exp[9.6× 10−6(P − Pb)
](2.12)
Temos então, para o óleo, comportamento análogo ao representado na Figura 2.4
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 19
Figura 2.4 – Viscosidade e Razão Gás-óleo vs Pressão
Fonte: Rosa (2006)
Viscosidade de um gás
Assim como para estimar a viscosidade do óleo, existem inúmeras maneiras de se estimara viscosidade de um gás. Um dos métodos mais utilizados, graças a sua simplicidade, é o métodode Lee-Gonzales-Eakin.
Em seus estudos, Lee et al. apresentou uma relação semi-empírica para a viscosidade degases naturais, propondo a seguinte equação (AHMED, 2016):
µg = 10−4K exp
[X( ρg
62.4
)Y ](2.13)
Onde:
k = (9.4+0.02Ma)T 1.5
209+19Ma+T
X = 3.5 + 986T
+ 0.01Ma
Y = 2.4−X
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 20
2.3 Interações Fluido-Rocha e Fluido-Fluido
Além dos fenômenos comportamentais intrínsecos dos fluidos e das rochas, devemostambém estudar como estes se relacionam entre si. Fatores como saturação, pressão capilar,permeabilidade relativa entre outros, podem não aparentar, mas possuem um papel decisivo naprecisão de uma simulação.
Saturação
Um dos fatores determinantes do comportamento de um certo fluido na presença deoutras fazes é a saturação. De acordo com Ertekin (2001), saturação de um determinadofluido representa a fração do poro ocupada pelo mesmo. Por representar uma fração do fluido,geralmente a saturação é representada como um valor entre 0 e 1, onde 0 representa a ausênciado fluido em questão e 1 a total ocupação do poro pelo mesmo. Também pode se considerar queem um sistema, a soma da saturação de todas as fases se igualará a 1. Tem-se então, para n fases:
n∑i=1
Si = 1 (2.14)
Conclui-se então que, para um sistema gás-óleo:
Sg + So = 1 (2.15)
Para um sistema água óleo:
So + Sw = 1 (2.16)
Finalmente, para um sistema trifásico:
So + Sg + Sw = 1 (2.17)
Pressão Capilar
Quando duas ou mais fases imiscíveis são colocadas em um recipiente, em estado estático,as fases mais pesadas tendem a se concentrar no fundo da mistura, assim como as mais levesno topo, se formando assim uma superfície de separação entre as fases. Segundo Rosa (2006),em meios porosos, porém, não ocorre a formação desta superfície, mas sim de uma zona detransição devido aos fenômenos capilares.
Ertekin (2001) define pressão capilar como uma função da saturação e de seu histórico(ou seja, drenagem ou embebição) para um determinado conjunto rocha-fluidos a depender datemperatura e da composição. Pressão capilar, portanto, é a força exercida entre as fases através
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 21
dos fenômenos capilares ou, principalmente, a tensão superficial, gerando um diferencial depressão entre fases submetidas às mesmas condições externas. Numericamente pode ser definidacomo a diferença de pressão entre a fase não-molhante e a fase molhante, como demonstradonas equações 2.18 e 2.19. A figura 2.5 exemplifica o comportamento da pressão capilar com ovariar das saturações de óleo e água.
Pcow = Po − Pw (2.18)
Para rocha preferencialmente molhável pela água, e
Pcgo = Pg − Po (2.19)
Para sistema óleo-gás.
Figura 2.5 – Pressão Capilar vs Saturação
Fonte: Ertekin (2001)
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 22
Permeabilidade Relativa
Originalmente a lei de Darcy foi derivada para fluxo monofásico, onde a permeabilidadedo meio poroso representa a permeabilidade absoluta do meio. Quando dois ou mais fluidosfluem simultaneamente, a lei de Darcy pode ser modificada através da inserção do termode permeabilidade relativa. Definido como a razão entre permeabilidade do sistema a umdeterminado fluido pela permeabilidade absoluta do meio, a permeabilidade relativa possuidimensão nula e é função do meio e dos fluidos envolvidos e suas respectivas saturações(ERTEKIN, 2001).
krx =kxk
(2.20)
Modelo de Corey
O modelo bifásico de Corey é um modelo válido principalmente para o processo dedrenagem em rochas consolidadas. O modelo baseia-se principalmente numa normalização dasaturação da fase molhante.
Swn =Sw − Siw
1− Sw(2.21)
A permeabilidade relativa da fase molhante é, então:
krw = S4wn (2.22)
E, para a fase não-molhante:
krnw = (1− Swn)2(1− Swn) (2.23)
Modelo trifásico de Naar, Henderson e Wygal
Já no modelo trifásico de Naar, Henderson e Wygal, as permeabilidades relativas de cadafase individual do reservatório são expressas por:
krw =
(Sw − Siw1− Siw
)4
(2.24)
kro =
(S3o(1− Sg + 2Sw − 3Siw)
(1− Siw)4
)(2.25)
krg =
(S3g (2− Sg − 2Siw)
(1− Siw)4
)(2.26)
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 23
Este modelo, porém, não incorpora Sor e Sgc e, para que o modelo funcione adequada-mente, devem ser impostas duas condições para as previsões do modelo:
kro = 0 (2.27)
Para So 5 Sor, e
krg = 0 (2.28)
Para Sg 5 Sgc.
2.4 Comportamento dos Fluidos no Reservatório
Potencial de fluido
Uma informação frequentemente obtida em estudos de mecânica dos fluidos é a carga.Quando em unidades usuais de engenharia, essa carga frequentemente se apresenta em m.c.a(metros de coluna de água), podendo ser interpretada como a coluna de água necessária paraatingir o mesmo nível de potencial de um certo ponto em estudo. Para fluidos incompressíveis,pode ser matematicamente representada por:
hf =p
γ+ z (2.29)
Onde:
- z representa a altura em relação a uma origem determinada arbitrariamente.
- p representa a pressão no ponto em estudo
- γ = γcρg sendo γc um fator de conversão de gravidade, ρ a massa específica do fluidoem estudo e g a constante de gravidade local.
Multiplicando-se os dois lados da equação (2.29) por γ, é possível obter:
γhf = p+ ρz (2.30)
Nota-se, por análise dimensional, que o termo γhf possui então dimensão semelhante apressão e pode ser representado pela letra grega Φ, tendo então:
Φ = p+ ρz (2.31)
Uma vez que, ao se estudar reservatórios, os processos geralmente se encontram abaixoda plataforma, torna-se interessante substituir o termo z, relativo a posição vertical, pelo termo
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 24
D relativo a Profundidade Vertical Real - TVD. Colocando-se como referencial comum o Kelly
Bushing (KB) e levando-se em conta a diferença de sentido, assume-se:
D = −z (2.32)
E, portanto, a a equação (2.31) torna-se:
Φ = p− γD (2.33)
Lei de Darcy
Engenheiro responsável pelo sistema de distribuição de águas de Dijon, na França, HenryDarcy designou uma das equações mais utilizadas para o estudo do fluxo de fluidos em meiosporosos. Em 1856, ao estudar problemas de tratamento de água através de filtros de areia, Darcyconcluiu que "a vazão através de um meio poroso é proporcional à área aberta ao fluxo e aodiferencial de pressão, e inversamente proporcional ao comprimento e à viscosidade."A fim deadequar e generalizar a equação, Darcy inseriu uma constante de proporcionalidade k que, apósvários experimentos, concluiu ser função apenas do meio poroso e batizou esta constante comopermeabilidade absoluta do meio. A equação obtida pr Darcy foi:
q = kAP1 − P2
µL(2.34)
A equação de Darcy, em seu formato original, foi formulada sobre algumas condiçõescomo:
• Estado estacionário,
• Fluxo isotérmico,
• Propriedades constantes do fluido e do meio em todo o trecho em estudo,
• Não há interação entre o fluido e o meio e
• Fluxo laminar.
Essas condições, porém, podem ser facilmente sobrepostas com a integração de outrasfunções ou equações.
Estado estacionário e transiente
Durante processos como a injeção de água em um reservatório ou a produção de óleo, épossível notar que a resposta a esta perturbação não é imediata. Podem se passar minutos, horas
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 25
e até dias para que esta onda seja sentida pelas áreas limítrofes do reservatório. Este fenômenoocorre graças a compressibilidade existente nos componentes do reservatório
De acordo com Ertekin (2001), para um fluido incompressível, a resposta à perturbaçãoseria imediatamente sentida na borda, supondo que a rocha reservatório é também incompressívelou, matematicamente:
ρ 6= f(P ) (2.35)
Para cf = 0 ou ρ constante, e
(∂ρ
∂t
)s
= 0 (2.36)
E, consequentemente,
(∂P
∂t
)s
= 0 (2.37)
Em termos de velocidade:
(∂u
∂t
)s
= 0 (2.38)
Problemas de fluxo envolvendo fluidos incompressíveis e meios porosos possuem solu-ções independentes do tempo, uma vez que todos os derivativos em relação ao tempo são nulos,dependendo apenas da posição s. Tal comportamento é chamado de estado estacionário.
Para fluidos levemente compressíveis e compressíveis, a perturbação é amortecida ini-cialmente pela compressibilidade do fluido, até que o fluido não consiga mais armazenar estaenergia. A energia remanescente é então transferida para o próximo ponto no espaço e assim pordiante. A energia armazenada será posteriormente transferida de um ponto para o outro. Apósum certo tempo, a perturbação será transferida até as regiões limítrofes e será então percebida emqualquer ponto de observação. Pode-se então dizer que há no meio poroso um comportamentoem função do tempo, ou estado transiente. Para este caso teríamos:
ρ = f(P ) (2.39)
Para cf > 0 e
(∂ρ
∂t
)s
6= 0 (2.40)
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 26
E, consequentemente,
(∂P
∂t
)s
6= 0 (2.41)
Em termos de velocidade:
(∂u
∂t
)s
6= 0 (2.42)
Equação da continuidade
Segundo Welty et al. (2007), a equação da continuidade é uma forma diferencial dalei da conservação de massa. Por se tratar de uma forma diferencial, deve-se então partir daconsideração de um volume de controle de dimensões ∆x, ∆y e ∆z. Considerar então a todo ofluxo mássico presente entre este bloco e seu entorno, como mostrado na figura 2.6.
Figura 2.6 – Fluxo mássico entre um bloco e seu entorno.
Fonte: Welty et al. (2007)
A expressão para a conservação de massa do volume de controle é então:
∫ρ (v· n) dA+
∂
∂t
∫ρdV = 0 (2.43)
Que pode ser interpretado como:Fluxo de massa paradentro ou para fora
do volume de controle
+
Taxa de acumulaçãode massa no interior
do volume de controle
= 0 (2.44)
Capítulo 2. Conceitos Básicos de Engenharia de Reservatórios 27
O fluxo mássico ρ (v· n) em cada face do volume de controle está representado na figura2.6. A massa contida dentro do volume de controle pode ser representada por ρ∆x∆y∆z e,portanto, a mudança de massa dentro do volume de controle é
∂
∂t(rho∆x∆y∆z) (2.45)
A densidade, porém, pode variar ponto a ponto, ou seja, ρ = ρ(x, y, z, t). Sendo assim, ofluxo mássico pelas faces do volume de controle pode ser representado, respectivamente para asdireções x, y e z por:
(ρvx|x+∆x − ρvx|x) ∆y∆z (2.46)
(ρvy|y+∆y − ρvy|y) ∆x∆z (2.47)
(ρvz|z+∆z − ρvz|z) ∆x∆y (2.48)
Substituindo as equações 2.45 até 2.48 na equação 2.43, temos:
(ρvx|x+∆x − ρvx|x) ∆y∆z + (ρvy|y+∆y − ρvy|y) ∆x∆z
+ (ρvz|z+∆z − ρvz|z) ∆x∆y +∂
∂t(rho∆x∆y∆z) = 0 (2.49)
Uma vez que, nos estudos em geral, o volume não se altera como tempo, torna-se possíveldividir a equação por ∆x∆y∆z. No limite, com ∆x,∆y e ∆z tendendo a um valor infinitesimal,obtém-se a forma extensa da equação da continuidade:
∂
∂xρvx +
∂
∂yρvy +
∂
∂zρvz +
∂ρ
∂t= 0 (2.50)
Aplicando a função matemática divergente, é possível obter a forma compacta da equaçãoda continuidade:
∇ · ρv +∂ρ
∂t= 0 (2.51)
28
3 Desenvolvimento Teórico
3.1 Equações de Fluxo
Seguindo o método proposto por Koederitz (2005), é possível, baseando-se na equaçãoda continuidade, escrever uma expressão geral para o balanço de massa de um problema de fluxocomo
{fluxo de entrada} − {fluxo de saída} − {produção} = {acúmulo}. (3.1)
Onde:
{fluxo de entrada} = Qx +Qy +Qz (3.2)
{fluxo de saída} = {fluxo de entrada}+ ∆x∂Qx
∂x+ ∆y
∂Qy
∂y+ ∆z
∂Qz
∂z(3.3)
Como citado na seção 2.4, a equação proposta por Darcy pode ser facilmente adaptadapara se adequar às condições do problema. Aplicando-se, por exemplo, as propriedades de fatorvolume-formação sobre a equação 2.34, é possível obter
q =kA(P1 − P2)
µBL. (3.4)
Para que a equação seja valida não só para fluxo horizontal, mas também para vertical, éinteressante substituir os termos de pressão por termos de potencial de fluido. Da mesma maneira,a equação pode ser convertida para suportar fluxo multifásico através da inserção do termo depermeabilidade relativa, obtendo:
q =kkrA(Φ1 − Φ2)
µBL(3.5)
Definindo um fluxo na direção x, assumindo dimensões infinitesimais e considerandoAx = ∆y∆z:
q =kkr∆y∆z
µB
∂Φ
∂x(3.6)
Substituindo a equação 3.6 na equação 3.3 e rearranjando os termos:
Capítulo 3. Desenvolvimento Teórico 29
{fluxo de entrada} − {fluxo de saída} =
∆x∆y∆z
[∂
∂x
(kkrµB
∂Φ
∂x
)+
∂
∂y
(kkrµB
∂Φ
∂y
)+
∂
∂z
(kkrµB
∂Φ
∂z
)](3.7)
Considerando um volume total Vb = ∆x∆y∆z,que o volume disponível para o fluido éV = φVb, que a porção desse volume ocupada por este seja igual a sua saturação e que o termode acúmulo representa a mudança de massa armazenada em uma célula no tempo,
{acúmulo} =∂
∂t
(SVbφ
B
). (3.8)
Substituindo as equações 3.7 e 3.8 na equação 3.1, adequando todos os termos para faseóleo e considerando uma produção de óleo igual a qo,
Vb
[∂
∂x
(kkroµoBo
∂Φ
∂x
)+
∂
∂y
(kkroµoBo
∂Φ
∂y
)+
∂
∂z
(kkroµoBo
∂Φ
∂z
)]− qo =
∂
∂t
(SoVbφ
Bo
). (3.9)
De forma análoga, para a água,
Vb
[∂
∂x
(kkrwµwBw
∂Φ
∂x
)+
∂
∂y
(kkrwµwBw
∂Φ
∂y
)+
∂
∂z
(kkrwµwBw
∂Φ
∂z
)]− qw =
∂
∂t
(SwVbφ
Bw
). (3.10)
Visto a existência do gás em solução, o gás não pode ser modelado da mesma maneiraque a água. Uma modelagem adequada para o gás seria primeiramente modelar o gás livre esomar com o gás em solução. Assim obtendo:
Vb
[∂
∂x
(kkroRs
µoBo
∂Φ
∂x
)+
∂
∂y
(kkroRs
µoBo
∂Φ
∂y
)+
∂
∂z
(kkroRs
µoBo
∂Φ
∂z
)+
∂
∂x
(kkrgµgBg
∂Φ
∂x
)+
∂
∂y
(kkrgµgBg
∂Φ
∂y
)+
∂
∂z
(kkrgµgBg
∂Φ
∂z
)]− (qg + qoRs)
=∂
∂t
(SoRsVbφ
Bo
+SgVbφ
Bg
)(3.11)
3.2 Influência da Pressão Capilar
A fim de se levar em conta os efeitos gravitacionais e de pressão capilar, Koederitz (2005)sugere um incremento ao potencial de fluido, inserindo na equação 2.33, termos relativos àpressão capilar.
Capítulo 3. Desenvolvimento Teórico 30
Para o óleo temos então:
Φo = Po − γoD (3.12)
De forma análoga, temos para a água:
Φw = Pw − γwD (3.13)
Aplicando-se a equação 2.18, temos portanto:
Φw = Po − Pcow − γwD (3.14)
Utilizando-se dos mesmos princípios, temos para o gás:
Φg = Po + Pcgo − γwD (3.15)
Substituindo as equações 3.12, 3.14 e 3.15 nas equações 3.9, 3.10 e 3.11, respectivamente,obtemos
Vb
[∂
∂x
(kkroµoBo
∂ (Po − γoD)
∂x
)+
∂
∂y
(kkroµoBo
∂ (Po − γoD)
∂y
)+
∂
∂z
(kkroµoBo
∂ (Po − γoD)
∂z
)]− qo =
∂
∂t
(SoVbφ
Bo
), (3.16)
Para o óleo,
Vb
[∂
∂x
(kkrwµwBw
∂ (Pw − γwD)
∂x
)+
∂
∂y
(kkrwµwBw
∂ (Pw − γwD)
∂y
)+
∂
∂z
(kkrwµwBw
∂ (Pw − γwD)
∂z
)]− qw =
∂
∂t
(SwVbφ
Bw
), (3.17)
Para a água, e
Vb
[∂
∂x
(kkroRs
µoBo
∂ (Po − γoD)
∂x
)+∂
∂y
(kkroRs
µoBo
∂ (Po − γoD)
∂y
)+∂
∂z
(kkroRs
µoBo
∂ (Po − γoD)
∂z
)+
∂
∂x
(kkrgµgBg
∂ (Po + Pcgo − γwD)
∂x
)+
∂
∂y
(kkrgµgBg
∂ (Po + Pcgo − γwD)
∂y
)+
∂
∂z
(kkrgµgBg
∂ (Po + Pcgo − γwD)
∂z
)]− (qg + qoRs) =
∂
∂t
(SoRsVbφ
Bo
+SgVbφ
Bg
), (3.18)
Para o gás.
Capítulo 3. Desenvolvimento Teórico 31
3.3 Discretizando as Equações
O modelo encontrado, entretanto, assume condições continuas dentro do reservatório e,consequentemente, existem infinitas soluções, para infinitos pontos diferentes no reservatório.Desta maneira, o sistema de equações seria complexo demais para ser calculado através dequalquer método. Faz-se, portanto, necessário a discretização e a consequente adaptação paraum sistema representado por blocos homogêneos, usualmente referidos como "gridblocks".
Durante o processo de simulação, o usuário assume que o reservatório pode ser divididoem um número n de blocos. Estes não necessariamente necessitam ter o mesmo formato oudimensões, porém devem ser pequenos o suficiente para que sejam verdadeiras consideraçõescomo propriedades constantes dentro de cada bloco e, ao mesmo tempo, grandes o suficiente parareduzir o número de cálculos. É válido lembrar que, para cada bloco, em um sistema trifásico,são atribuídas 3 equações, uma para cada fase, além das equações respectivas às saturações, queequilibram o sistema. Um sistema possui, então, para n gridblocks, um total de 6n equações.
Para os fins deste estudo, a sssunção de que cada bloco possui formato de paralelepípedo,com dimensões semelhantes ∆x, ∆y e ∆z e posicionam-se como apresentado na Figura 3.7.Este modelo, porém, assume a individualidade de cada bloco que, apesar de compartilhar suas di-mensões com seus blocos irmãos, possuem propriedades diferentes e, portanto, comportamentosdiferentes no decorrer do estudo.
Figura 3.7 – Organização dos blocos no modelo estudado
Fonte: Koederitz (2005)
Capítulo 3. Desenvolvimento Teórico 32
Para simplificar os cálculos, pode-se definir um termo M , chamado de Mobilidade edefinido por:
M =k.krµ.B
(3.19)
E, utilizando-se da aproximação da diferencial parcial como diferença finita
∂A
∂x≈ A2 − A1
x2 − x1
(3.20)
obtendo então, para o óleo:
Vb
(Mo
∂(Po−γoD)∂x
)i+ 1
2,j,k−(Mo
∂(Po−γoD)∂x
)i− 1
2,j,k
∆x+
(Mo
∂(Po−γoD)∂y
)i,j+ 1
2,k−(Mo
∂(Po−γoD)∂y
)i,j− 1
2,k
∆y+(
Mo∂(Po−γoD)
∂z
)i,j,k+ 1
2
−(Mo
∂(Po−γoD)∂z
)i,j,k− 1
2
∆z
− qo =∂
∂t
(SoVbφ
Bo
)(3.21)
Utilizando-se da mesma aproximação para o tempo:
Vb
(Mo
∂(Po−γoD)∂x
)i+ 1
2,j,k−(Mo
∂(Po−γoD)∂x
)i− 1
2,j,k
∆x+
(Mo
∂(Po−γoD)∂y
)i,j+ 1
2,k−(Mo
∂(Po−γoD)∂y
)i,j− 1
2,k
∆y+(
Mo∂(Po−γoD)
∂z
)i,j,k+ 1
2
−(Mo
∂(Po−γoD)∂z
)i,j,k− 1
2
∆z
− qo =
(SoVbφBo
)t+∆t−(SoVbφBo
)t
∆t(3.22)
Discretizando ainda os termos de diferencial de potencial, chega-se a:
Capítulo 3. Desenvolvimento Teórico 33
Vb∆x·
[Mo
i+12 ,j,k
((Poi+1,j,k
− γoDi+1,j,k
)−(Poi,j,k − γoDi,j,k
)∆x
)−
Moi− 1
2 ,j,k
((Poi,j,k − γoDi,j,k
)−(Poi−1,j,k
− γoDi−1,j,k
)∆x
)]+
Vb∆y·
[Mo
i,j+12 ,k
((Poi,j+1,k
− γoDi,j+1,k
)−(Poi,j,k − γoDi,j,k
)∆y
)−
Moi,j− 1
2 ,k
((Poi,j,k − γoDi,j,k
)−(Poi,j−1,k
− γoDi,j−1,k
)∆y
)]+
Vb∆z·
[Mo
i,j,k+12
((Poi,j,k+1
− γoDi,j,k+1
)−(Poi,j,k − γoDi,j,k
)∆z
)−
Moi,j,k− 1
2
((Poi,j,k − γoDi,j,k
)−(Poi,j,k−1
− γoDi,j,k−1
)∆z
)]−
qo =
(SoVbφBo
)t+∆t−(SoVbφBo
)t
∆t(3.23)
Retornando o volume total às suas condições originais Vb = ∆x∆y∆z e simplificandoos termos em que os mesmos estão presentes, obtém-se:
∆y∆z
∆x·[Mo
i+12 ,j,k
((Poi+1,j,k
− γoDi+1,j,k
)−(Poi,j,k − γoDi,j,k
))−
Moi− 1
2 ,j,k
((Poi,j,k − γoDi,j,k
)−(Poi−1,j,k
− γoDi−1,j,k
))]+
∆x∆z
∆y·[Mo
i,j+12 ,k
((Poi,j+1,k
− γoDi,j+1,k
)−(Poi,j,k − γoDi,j,k
))−
Moi,j− 1
2 ,k
((Poi,j,k − γoDi,j,k
)−(Poi,j−1,k
− γoDi,j−1,k
))]+
∆x∆y
∆z·[Mo
i,j,k+12
((Poi,j,k+1
− γoDi,j,k+1
)−(Poi,j,k − γoDi,j,k
))−
Moi,j,k− 1
2
((Poi,j,k − γoDi,j,k
)−(Poi,j,k−1
− γoDi,j,k−1
))]−
qo =
(SoVbφBo
)t+∆t−(SoVbφBo
)t
∆t(3.24)
De forma análoga, as mesmas operações podem ser realizadas nas equações 3.17 e 3.18,que modelam a água e o gás, respectivamente.
O termo Moi+1
2 ,j,k, entretanto, assume uma permeabilidade média entre os centros dos
blocos. Rosa (2006) sugere, em seu trabalho, que para este propósito, seja utilizado o método da
Capítulo 3. Desenvolvimento Teórico 34
média harmônica ponderada, ou seja,
kavg =∆xi∆xi+1
∆xiki
+ ∆xi+1
ki+1
(3.25)
3.4 Representação dos Poços
Ainda que o modelo contemple a movimentação dos fluidos em um reservatório demaneira completa, principal objetivo de uma simulação é "imitar"os efeitos gerados pelasdiversas perturbações em um reservatório. Estas, por sua vez, são geradas através de poços,sejam eles de injeção ou de produção. Modelar os poços, portanto, se mostra uma tarefa essencialpara o desenvolvimento de um modelo eficiente.
Um dos modelos mais simples, porém mais eficientes, é o modelo de Peaceman. Estemodelo parte da equação de Darcy e considera o fluido saindo da rocha como um todo, nãolevando em conta, por exemplo, mudanças de estado físico decorrente da alteração brusca depressão entre a rocha-reservatório e o poço. Propriedades essenciais ao modelo, como o fluxosimultâneo de várias fases com propriedades diferentes e adaptação ao modelo de grid-blocks
são facilmente adaptáveis, uma vez que a equação de Darcy pode ser facilmente manipulada.
O modelo inicialmente proposto por Peaceman (1978) é a proposição de Schwabe eBrand:
q =2πkh
µ
Pe − Pwfln(rerw
)+ s
(3.26)
Onde Pe representa a pressão média volumétrica não só do bloco em estudo, mas tambémdos blocos ao entorno deste e s representa o fator de skin do poço, isto é, representa o dano (oumelhoramento) decorrente dos processos de perfuração e completação.
Peaceman (1978) então assume que as dimensões do bloco são muito superiores ao raiodo poço (re >>> rw), obtendo:
Pe ≈ Pi,j,k (3.27)
Ertekin (2001) continua estes estudos e encontra, para fluxo em estado estacionário, àseguinte equação:
qsc =2πkh (Pi,j,k − Pwf )
µB[ln(rerw
)− 0.5 + s
] (3.28)
Capítulo 3. Desenvolvimento Teórico 35
Para condições anisotrópicas, Peaceman (1978) ainda define:
re ≈ req = 0, 28 ·
√[√kykx
(∆x)2]
+[√
kxky
(∆y)2]
4
√kyKx
+ 4
√kxKy
(3.29)
E, consequentemente, para condições isotrópicas:
re ≈ req = 0, 14
√(∆x)2 + (∆y)2 (3.30)
A adequação para modelo multifásico é feita pela simples inserção do termo de permea-bilidade relativa, multiplicando o numerador do lado esquerdo da equação, resultando em, para oóleo:
qo =2πkrokh
(Poi,j,k − Pwf
)µoBo
[ln(rerw
)− 0.5 + s
] . (3.31)
36
4 Funcionamento do Simulador
Uma vez deduzidos todos os modelos necessários, foi iniciada a montagem do simulador.Este, baseado em FORTRAN 90, utiliza em seu código apenas componentes de uso livre, nãonecessitando de licenças adicionais nem citações. A própria linguagem FORTRAN possuilicença de uso livre e, sendo um dos códigos mais eficientes para cálculos matemáticos simples,aliado com um código de fácil aprendizado devido a sua semântica simples, foi escolhida comolinguagem de uso neste trabalho.
4.1 A Linguagem FORTRAN
Definida como uma linguagem de nível alto, FORTRAN tem seu nome graças a contraçãode "FORmula TRANslated"(inglês para fórmula traduzida). Muito utilizada para processosextensivos de cálculo, essa linguagem teve inicio nos anos 1950 e se dedicava principalmente acientistas e engenheiros.
Em suas primeiras versões, era inserida através de cartões perfurados, Hoje em dia,porém, por ser uma linguagem versátil e bem adequada para operações matemáticas, existemvários compiladores e infinitas IDE’s. Por esta mesma razão, esta linguagem foi, por muitotempo, a preferida pelas universidades para pesquisadores e engenheiros.
Hoje em dia no Brasil, a maioria das instituições federais ainda utiliza o FORTRANpara os cursos de engenharias Química e de Petróleo. Outros cursos, entretanto, substituem essalinguagem por C, Pascal, Java e, recentemente, Phyton.
Semântica Básica da Linguagem
A linguagem FORTRAN 90, versão utilizada neste estudo, surgiu como uma tentativa demodernizar a antiga versão 77, que, apesar de já incluir várias estruturas lógicas, apresentava-se obsoleta em relação às outras linguagens. A modernização foi bem aceita, uma vez queambas utilizavam de um modelo de sintaxe parecido, porém com grandes diferenças quanto aodesempenho. Dentre a semântica básica desta linguagem, pode-se destacar:
1 O FORTRAN 90, ao contrário do 77, não possui uma regra explicita quanto ascolunas (alguns compiladores mais arcaicos, no entanto, necessitam de flags para queesta regra seja quebrada).
2 O ponto de exclamação (!) define o início e um comentário e instrui o compilador aignorar todo o conteúdo desta linha após o mesmo.
Capítulo 4. Funcionamento do Simulador 37
3 Ainda que a linguagem seja compatível com comandos em letras minúsculas, aboa prática e a praticidade na leitura sugerem que todos os comandos estejam nacapitalização maiúscula. O mesmo ocorre com a identação, porém devido a incompa-tibilidade de alguns compiladores mais antigos, a boa prática recomenda também sóutilizar os 8 primeiros caracteres de cada linha para os comandos, sendo utilizadosna maioria das vezes apenas para referências.
4.2 Mecanismo de Resolução
As equações desenvolvidas durante os capítulos 2 e 3 podem ser reunidas, formando umsistema de, para n gridblock, 6× n equações. Uma maneira de solucionar esse tipo de sistema, éencará-lo como uma multiplicação de matrizes, no formato A× x− b = 0, onde A é uma matrizquadrada de ordem 6n, que recebe os termos quem multiplicam as pressões e saturações nasequações, x é o vetor cujo valor será manipulado durante a solução, contendo os valores dasvariáveis e b é um vetor coluna que recebe todas as informações independentes das variáveisrepresentadas em x.
Uma vez que sistemas como esse podem alcançar números incrivelmente altos de equa-ções e soluções diretas iriam exigir muito cálculo computacional, com o incidente risco de nãoconvergir, a solução adotada, graça a sua simplicidade e eficiência, é o Método de Newton-Raphson. Esse método iterativo baseia-se na utilização da iteração anterior, somado o resquício(ou diferença) dividido pela derivada das equações que compõe o sistema.
O Método de Newton-Raphson é, então, representado por:
xn+1 = xn −f (xn)
f ′ (xn)(4.1)
4.3 Funcionamento Básico do Programa
O programa encontra-se no formato de sub-rotina, a fim de melhor se adequar auma estrutura modular, de fácil adaptação para diferentes situações. Esta, com o nome de"Newton Solver"utiliza como entrada informações como estado anterior do reservatório(Representadopela matriz R), informações relativas aos poços (WELLS), informações relativas ao passo detempo (tstep), dimensões dos blocos (GB), número total de blocos em cada direção (x,y e z),número total de equações do sistema (n), informações sobre o comportamento das bordas doreservatório (BOUNDARY), informações sobre a rocha-reservatório (ROCK), informações sobreo fluido a ser estudado pré processadas de acordo com as condições anteriores (PVT), Informa-ções sobre o fluido estáticas ao tempo (SPVT) e configurações relativas à precisão e ao limitede iterações (SETUP). Suas informações de saída constituem no novo estado do reservatório(sobrescrito sobre a matriz R) e informações quantitativas como óleo, água e gás "in-place".
Capítulo 4. Funcionamento do Simulador 38
Para construir as matrizes utilizadas para a resolução, o programa segue um algoritmoespecífico, onde ele trata cada fase por sua vez, compondo as matrizes linha por linha de acordocom as equações. As equações são inseridas no modelo na seguinte ordem:
1o - Equações relativas ao fluxo do óleo na fase líquida
2o - Equações relativas ao fluxo de água
3o - Equações relativas ao fluxo de gás livre e gás em solução
4o - Equações relativas ao correto somatório das saturações, certificando-se que as mesmasatinjam o todo da célula
5o - Equações relativas à pressão capilar óleo-água
6o - Equações relativas à pressão capilar gás-óleo
O algoritmo utilizado segue um padrão onde, através de uma sequência de caracteres,reconhece o tipo de equação a ser tratado. Uma vez reconhecido, ele segue preenchendo as linhascom as informações tridimensionais das células, mantendo sempre a ordem de preenchimentoseguindo primeiramente o eixo x, após o y e, finalmente o z. Uma vez atingido o final de umeixo, o programa da um passo no eixo seguinte e reinicia o anterior, fazendo assim com quetodas as células sejam cobertas. Após o término de todos os eixos, o programa se encarrega detrocar a variável que armazena a sessão a ser trabalhada.
Devido a esta organização, é possível garantir que a matrizA gerada não possuirá determi-nante nulo e, portanto, o sistema possui uma solução única, além de transformar com excelênciauma informação tridimensional em uma informação bidimensional facilmente mapeável comgarantias de que nenhum dado será perdido no processo.
Uma vez montada a matriz A e o vetor b, o programa calcula a função derivada e, atravésdo Método de Newton-Raphson, entra em loop até que o critério de parada seja atingido. Ocritério de parada geralmente é representado por um fator aceitável de diferença entre duasiterações consecutivas ou um número limite de iterações que evita uma eventual sobrecarga dosistema.
Atingido esse critério de parada, o programa interpreta as informações e as gera noformado de saída necessário, gerando um vetor de resultado com 4 dimensões, sendo a primeiraa informação armazenada, e as outras três as coordenadas a que se referem. O programa calculatambém, ao final de todos os cálculos deste espaço de tempo, as informações qualitativas e asexporta em seu respectivo vetor.
Ao final so cálculo, a subrotina se encerra e retorna ao programa principal criado pelousuário, que pode armazenar as informações e iniciar um novo passo de tempo ou encerrar oscálculos e iniciar sua interpretação.
O formato de saída gerado pelo programa principal é uma sequência de pontos, ondeo programa informa a posição x, y, z e, logo após, as pressões e saturações decorrentes do
Capítulo 4. Funcionamento do Simulador 39
cálculo. O programa ainda exibe como saída um segundo arquivo, representando, em sequência,as condições médias de pressão do reservatório, a quantidade de óleo e gás ainda armazenados ea vazão total dos poços, como representado na nas figuras 4.8 e 4.9.
Figura 4.8 – Modelo de output contendo informações de cada bloco do reservatório
Figura 4.9 – Modelo de output contendo informações do reservatório como um todo
As informações exportadas sobre o reservatório podem, com auxilio do Microsoft Excel,serem transformadas em mapas, como por exemplo as figuras 4.10 e 4.11, que indicam mapas depressão e saturação ao redor de um poço encontrado nas coordenadas x = 5, y = 5, percorrendotodos os blocos na direção z.
Capítulo 4. Funcionamento do Simulador 40
Figura 4.10 – Interpretação das informações extraídas do programa. Pressão de óleo.
Capítulo 4. Funcionamento do Simulador 41
Figura 4.11 – Interpretação das informações extraídas do programa. Saturação de óleo.
Capítulo 4. Funcionamento do Simulador 42
Mais detalhes podem ser encontrados no Apêndice A, que apresenta o código emFORTRAN utilizado na confecção do programa.
4.4 Estudos de Caso
A fins de teste da capacidade e das limitações do programa, foram executados estudos decaso sobre situações de potencial uso do programa, incluindo:
4.4.1 Caso 1 - Reservatório convencional
Utilizando-se os inputs presentes no apêndice B, chegou-se ao resultado apresentado nasfiguras 4.12 e 4.13, mostrando que o simulador resolveu o problema com propriedade. A quedade pressão no entorno do bloco de posição 5, 5 é devida a presença de poço produtor na região.
Figura 4.12 – Interpretação das informações extraídas do programa. Pressão de óleo. Reservató-rio convencional.
Capítulo 4. Funcionamento do Simulador 43
Figura 4.13 – Interpretação das informações extraídas do programa. Saturação de óleo. Reserva-tório convencional.
Capítulo 4. Funcionamento do Simulador 44
4.4.2 Caso 2 - Reservatório com ausência de capa de gás
O caso 2, em contrapartida, apresentou resultados inconclusivos. Acredita-se que aprincipal razão seja a rápida variação de pressão causada pela ausência do gás. Uma vez queo método utilizado é o método implícito de cálculo, o coeficiente de expansão do óleo não semostra suficiente, gerando distúrbios e assim resultados irreais, como pode ser conferido nasfiguras 4.14 e 4.15.
Figura 4.14 – Interpretação das informações extraídas do programa. Pressão de óleo. Reservató-rio com ausência de capa de gás.
4.4.3 Caso 3 - Reservatório com quantidade reduzida de água de
formação
De maneira análoga ao caso 2, o caso 3 mostrou-se também inconclusivo, demonstrando anecessidade do método por todos os fluidos modelados. Valores próximos a zero para a saturação
Capítulo 4. Funcionamento do Simulador 45
Figura 4.15 – Interpretação das informações extraídas do programa. Saturação de óleo. Reserva-tório com ausência de capa de gás.
Capítulo 4. Funcionamento do Simulador 46
geram, no método implícito, situações onde erros de arredondamento, problema comum ao setratar de métodos numéricos, se tornem relevantes e prejudiquem o cálculo do resultado. Osresultados encontram-se nas figuras 4.16 e 4.17.
Figura 4.16 – Interpretação das informações extraídas do programa. Pressão de óleo. Reservató-rio com quantidade reduzida de água de formação.
Capítulo 4. Funcionamento do Simulador 47
Figura 4.17 – Interpretação das informações extraídas do programa. Saturação de óleo. Reserva-tório com quantidade reduzida de água de formação.
48
5 Conclusão e Sugestões paraTrabalhos Futuros
A simulação de reservatórios é uma técnica em constante desenvolvimento que, a cadadia, se torna mais importante seu conhecimento. A revolução digital faz com que computadoresconsigam executar modelos cada vez mais complexos e confiáveis em tempo economicamenteviáveis. Em contrapartida, essa disponibilidade de softwares, juntamente ao patenteamento demetodologias utilizado por várias empresas, fazem com que estes métodos caiam no esqueci-mento.
Com o intuito de reunir estas informações em um formato consolidado e didático,este trabalho apresentou o estudo e o desenvolvimento de uma metodologia de previsão decomportamento de um reservatório trifásico através da modelagem Black Oil, utilizando apenaslinguagens e códigos abertos ao público. Dentre todas as características do código implementado,pode-se destacar sua facilidade em ser transformado. Uma vez que todas suas entradas sãomanipuláveis e suscetíveis a implantação de modelos diferentes. Sua resolução pelo método deNewton-Raphson, apesar de demorada, apresenta convergência em condições mais amenas.
A metodologia adotada para a reorganização das informações provou-se efetiva e capaz delidar com o desafio proposto pelo programa. Posteriores revisões das deduções e discretizaçõesconfirmaram a eficiência destas equações na representação da realidade quando atendidascondições amenas de reservatório, estando limitadas a resolução do estudo, que não pode seralta demais a fim de comprometer a performance, nem baixa demais a ponto de comprometer aeficiência e a presença de todas as fases modeladas.
Resta ainda, porém, estudos de como melhor lidar com gerenciamento de memóriadurante a criação das matrizes solução, assim como a pesquisa por métodos de solução maiseficientes, como método de gradiente conjugado, ORTHOMIN, entre outros. Sugere-se tambémestudos comparativos entre resultados obtidos através deste programa e simuladores comerciais,a fim de se realizar ajustes, assim como a criação de módulos adicionais para o programa,adicionando novas metodologias para o cálculo de propriedades.
49
Referências
AHMED, T. Reservoir engineering handbook. Amsterdam Boston: Gulf Professional Pub, 2010.ISBN 978-1-85617-803-7. Citado na página 14.
AHMED, T. Equations of State and PVT Analysis, Second Edition: Applications for ImprovedReservoir Modeling. Estados Unidos da América: Gulf Professional Publishing, 2016. ISBN978-0-12801-570-5. Citado na página 19.
BRADLEY, H. B. Petroleum Engineering Handbook. Estados Unidos da América: Society ofPetroleum, 1987. ISBN 978-1-55563-010-3. Citado na página 15.
ERTEKIN, T. Basic Applied Reservoir Simulation. Estados Unidos da América: Society ofPetroleum Engineers, 2001. ISBN 978-1-55563-089-8. Citado 8 vezes nas páginas 13, 14, 18,20, 21, 22, 25 e 34.
KATZ, D. L. V. Handbook of natural gas engineering. New York: McGraw-Hill, 1959. ISBN978-0-07033-384-0. Citado na página 16.
KOEDERITZ, L. F. Lecture Notes On Applied Reservoir Simulation. University of Missouri- Rolla, Estados Unidos da América: World Scientific Publishing Company, 2005. ISBN978-9-81256-198-6. Citado 3 vezes nas páginas 28, 29 e 31.
MCCAIN, W. D. The properties of petroleum fluids. Tulsa - OK, Estados Unidos da América:PennWell Books, 1990. ISBN 978-0-87814-335-1. Citado na página 15.
PEACEMAN, D. Interpretation of well-block pressures in numerical reservoir simula-tion(includes associated paper 6988 ). Society of Petroleum Engineers Journal, Societyof Petroleum Engineers (SPE), v. 18, n. 03, p. 183–194, jun 1978. Disponível em:<https://doi.org/10.2118/6893-pa>. Citado 2 vezes nas páginas 34 e 35.
ROSA, A. J. Engenharia de Reservatório de Petróleo. Rio de Janeiro: Interciência, 2006. ISBN978-8-57193-135-6. Citado 7 vezes nas páginas 12, 14, 15, 17, 19, 20 e 33.
TERRY, R. E.; ROGERS, J. B. Applied Petroleum Reservoir Engineering. Estados Unidos daAmérica: Prentice Hall, 2014. ISBN 978-0-13315-558-7. Citado na página 15.
WELTY, J. et al. Fundamentals of Momentum, Heat and Mass Transfer. Hoboken - NJ, EstadosUnidos da América: Wiley, 2007. ISBN 978-0-47012-868-8. Citado na página 26.
Apêndices
51
APÊNDICE A – Código Desenvolvido
Nas páginas a seguir, encontra-se todo o código desenvolvido durante o estudo destetrabalho. Existe no início uma seção de comentários em inglês que explicam o conteúdo de cadavariável, fazendo, assim, um mapeamento detalhado da localização de cada informação.
1
2 SUBROUTINE Newton_Solver(R,WELLS,tstep,GB,x,y,z,n,BOUNDARY,ROCK
,PVT,SPVT,WRES,RRES,SETUP)
3 INTEGER x, y, z, i, j, k, l, m, n, counter,ipvt(n),info
4 REAL R(6,x,y,z),GUESS(n),GUESSold(n), WELLS(x,y,z,7), tstep, GB(3),
ROCK(3,x,y,z), PVT(10,x,y,z), SPVT(4), WRES(3,x,y,z), RRES(4), B(n
), Pi, A(n,n), BOUNDARY(6), SETUP(2),work(n), det(2), RT(n), dA(n,
n)
5 CHARACTER(3) var
6 ! This subroutine organize and solve the system for a determined
timestep.
7 !
8 !
#########################################################################
9 ! # ATTENTION:
#
10 ! # FOR THIS SUBROUTINE BE ABLE TO RUN, YOU NEED TO ADD THE
#
11 ! # -ffixed-line-length-0 AND -ffree-line-length-0 FLAGS TO THE
COMPILLER #
12 ! # ( GFORTRAN & GCC )
#
13 ! # STILL NEED SOME TESTING, BUT I THINK INTEL FORTRAN DOESN’T
NEED FLAGS #
14 ! # TO COMPILE THIS SUBROUTINE IF IT’S ON F90 FILE FORMAT
#
15 !
#########################################################################
16 !
17 ! In order to solve the system, the computer uses Newton method with
a maximum number of iterations.
18 ! INPUT/OUTPUT VARIABLES
APÊNDICE A. Código Desenvolvido 52
19 ! *R is a 4 dimensional matrix that stores data from previous
runs, like pressures and saturations. This variable will store the
new data. It has the following structure: R(data,X_position,
Y_position,Z_position). The data is organized in: 1 - Oil Pressure
; 2 - Water Pressure; 3 - Gas Pressure; 4 - Oil Saturation; 5 -
Water Saturation; 6 - Gas Saturation
20 ! *WELLS is a 4 dimensional that stores the data from producing
and injecting wells. It has the following structure: WELLS(
X_position,Y_position,Z_position,stored_data) Stored data is
organized in: 1 - Number of the Well(0 for no well); 2 - Type of
well (0 for productor, 1 for water injector, 2 for gas injector);
3 - Type of Constraint (0 for Fluid Rate, 1 for Pressure); 4 -
Constraint as determined on 3; 5 - Pwf, 6 - Well diameter; 7 -
Skin Effect
21 ! *tstep defines the size of the timestep to be calculated. The
distance in time between the information that will be stored.
22 ! *GB stores information about the dimensions of each gridblock
of the model. It’s organized as a single vector with the following
structure: GB(1) stores the X dimension of the gridblocks; GB(2)
stores the Y dimension of the gridblocks; GB(3)stores the Z
dimension of the gridblocks.
23 ! *BOUNDARY is a size 6 vector that stores the boundary
conditions for each of the reservoir boundaries. (0 for no flow,
otherwise it stores the flow pressure)
24 ! *ROCK is a 4 dimensional matrix that stores information about
Porosity and Permeability. It has the following structure: ROCK(
data,X_position,Y_position,Z_position). The data is organized in:
1 - Vertical Permeability; 2 - Horizontal Permeability; 3 -
Porosity
25 ! *PVT stores data that relates to the fluid. It has the
following structure: PVT(data,X_position,Y_position,Z_position).
The data is organized in: 1 -Oil Viscosity; 2 -Oil FVF; 3 - Kro; 4
- Pcow; 5 - Pcog; 6 - Rso; 7 - Gas FVF; 8 - Gas Viscosity; 9 -
Krw; 10 - Krg
26 ! *SPVT stores PVT data that doesn’t change with time or position
. It’s a one dimension vector with the following structure: 1 -
Water Brine density; 2 - Gas specific gravity; 3 - Oil Sp.Gr.; 4 -
Reservoir Temperature.
27 ! *WRES store the output data, like the production or the
pressure on each well.
28 ! *RRES store the output data of the reservoir, like the average
pressure, the FOIP, the FGIP and the FWIP
APÊNDICE A. Código Desenvolvido 53
29 ! *SETUP stores the parameters for the Newton solver: 1 - Maximum
number of iterations before break the timestep; 2 - Decimal order
of precision for the Newton solver.
30 i=1
31 j=1
32 k=1
33
34 Pi= 3.1415265358979323846264338327950288419716939937510
35 A=0
36 B=0
37 var=’OIL’
38 DO l=1,n,1 !this section creates the A matrix
39 IF (var.eq.’OIL’) THEN !Generates the section of the matrix that
relates with oil equations.
40 IF (i.eq.1) THEN
41 A(l,l+1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i+1,j,k)))*GB(2)*GB
(3)*PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))
42 IF (BOUNDARY(1).ne.0) THEN
43 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(3,i,j,k)/(GB(1)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(1)
44 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(3,i,j,k)/(GB
(1)*PVT(2,i,j,k)*PVT(1,i,j,k))
45 END IF
46 A(l,l) = A(l,l)-A(l,l+1)
47 ELSE IF (i.eq.x) THEN
48 A(l,l-1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i-1,j,k)))*GB(2)*GB
(3)*PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))
49 IF (BOUNDARY(2).ne.0) THEN
50 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(3,i,j,k)/(GB(1)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(2)
51 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(3,i,j,k)/(GB
(1)*PVT(2,i,j,k)*PVT(1,i,j,k))
52 END IF
53 A(l,l) = A(l,l)-A(l,l-1)
54 ELSE
55 A(l,l+1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i+1,j,k)))*GB(2)*GB
(3)*PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))
56 A(l,l-1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i-1,j,k)))*GB(2)*GB
(3)*PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))
57 A(l,l) = A(l,l)-A(l,l-1)-A(l,l+1)
58 END IF
59 IF (j.eq.1) THEN
APÊNDICE A. Código Desenvolvido 54
60 A(l,l+x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j+1,k)))*GB(1)*GB
(3)*PVT(3,i,j,k)/(GB(2)*PVT(2,i,j,k)*PVT(1,i,j,k))
61 IF (BOUNDARY(3).ne.0) THEN
62 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(3,i,j,k)/(GB(2)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(3)
63 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(3,i,j,k)/(GB
(2)*PVT(2,i,j,k)*PVT(1,i,j,k))
64 END IF
65 A(l,l) = A(l,l)-A(l,l+x)
66 ELSE IF (j.eq.y) THEN
67 A(l,l-x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j-1,k)))*GB(1)*GB
(3)*PVT(3,i,j,k)/(GB(2)*PVT(2,i,j,k)*PVT(1,i,j,k))
68 IF (BOUNDARY(4).ne.0) THEN
69 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(3,i,j,k)/(GB(2)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(4)
70 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(3,i,j,k)/(GB
(2)*PVT(2,i,j,k)*PVT(1,i,j,k))
71 END IF
72 A(l,l) = A(l,l)-A(l,l-x)
73 ELSE
74 A(l,l+x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j+1,k)))*GB(1)*GB
(3)*PVT(3,i,j,k)/(GB(2)*PVT(2,i,j,k)*PVT(1,i,j,k))
75 A(l,l-x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j-1,k)))*GB(1)*GB
(3)*PVT(3,i,j,k)/(GB(2)*PVT(2,i,j,k)*PVT(1,i,j,k))
76 A(l,l) = A(l,l)-A(l,l-x)-A(l,l+x)
77 END IF
78 IF (k.eq.1) THEN
79 A(l,l+x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(3,i,j,k)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
80 B(l) = B(l) + 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(3,i,j,k)*SPVT(3)*GB(3)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
81 IF (BOUNDARY(5).ne.0) THEN
82 B(l) = B(l) - 0.006328*ROCK(1,i,j,k)*GB(2)*GB(1)*PVT(3,i,j,k)/(GB(3)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(5)
83 A(l,l) = A(l,l)-0.006328*ROCK(1,i,j,k)*GB(2)*GB(1)*PVT(3,i,j,k)/(GB
(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
84 END IF
85 A(l,l) = A(l,l)-A(l,l+x*y)
86 ELSE IF (k.eq.z) THEN
87 A(l,l-x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*
GB(1)*PVT(3,i,j,k)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
APÊNDICE A. Código Desenvolvido 55
88 B(l) = B(l) - 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*
GB(1)*PVT(3,i,j,k)*SPVT(3)*GB(3)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
89 IF (BOUNDARY(6).ne.0) THEN
90 B(l) = B(l) - 0.006328*ROCK(1,i,j,k)*GB(2)*GB(3)*PVT(3,i,j,k)/(GB(1)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(6)
91 A(l,l) = A(l,l)-0.006328*ROCK(1,i,j,k)*GB(2)*GB(3)*PVT(3,i,j,k)/(GB
(1)*PVT(2,i,j,k)*PVT(1,i,j,k))
92 END IF
93 A(l,l) = A(l,l)-A(l,l-x*y)
94 ELSE
95 A(l,l+x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(3,i,j,k)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
96 A(l,l-x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*
GB(1)*PVT(3,i,j,k)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
97 B(l) = B(l) + 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(3,i,j,k)*SPVT(3)*GB(3)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
- 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*GB(1)*
PVT(3,i,j,k)*SPVT(3)*GB(3)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
98 A(l,l) = A(l,l)-A(l,l-x*y)-A(l,l+x*y)
99 END IF
100 IF (WELLS(i,j,k,1).ne.0) THEN
101 IF (WELLS(i,j,k,2).eq.0) THEN
102 B(l) = B(l)+0.00708*ROCK(2,i,j,k)*PVT(3,i,j,k)*GB(3)*(R(1,i,j,k)/2-
WELLS(i,j,k,5))/(PVT(2,i,j,k)*PVT(1,i,j,k)*(LOG(SQRT(GB(1)*GB(2)/
Pi)/WELLS(i,j,k,6))-0.75+WELLS(i,j,k,7)))
103 A(l,l) = A(l,l)-0.00708*ROCK(2,i,j,k)*PVT(3,i,j,k)*GB(3)/(PVT(2,i,j,k
)*PVT(1,i,j,k)*(LOG(SQRT(GB(1)*GB(2)/Pi)/WELLS(i,j,k,6))-0.75+
WELLS(i,j,k,7)))
104 END IF
105 END IF
106 A(l,l+3*x*y*z) = GB(1)*GB(2)*GB(3)/tstep*ROCK(3,i,j,k)/PVT(2,i,j,k)
107 B(l) = B(l) + GB(1)*GB(2)*GB(3)/tstep*ROCK(3,i,j,k)/PVT(2,i,j,k)*R(4,
i,j,k)
108 i=i+1
109 IF (i.gt.x) THEN
110 i=1
111 j=j+1
112 END IF
113 IF (j.gt.y) THEN
114 j=1
115 k=k+1
116 END IF
APÊNDICE A. Código Desenvolvido 56
117 IF (k.gt.z) THEN
118 k=1
119 var=’WAT’
120 END IF
121 ELSE IF (var.eq.’WAT’) THEN !Generates the section of the matrix that
relates with water equations.
122 IF (i.eq.1) THEN
123 A(l,l+1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i+1,j,k)))*GB(2)*GB
(3)*PVT(9,i,j,k)/(GB(1))
124 IF (BOUNDARY(1).ne.0) THEN
125 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(9,i,j,k)/(GB(1)
)*BOUNDARY(1)
126 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(9,i,j,k)/(GB
(1))
127 END IF
128 A(l,l) = A(l,l)-A(l,l+1)
129 ELSE IF (i.eq.x) THEN
130 A(l,l-1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i-1,j,k)))*GB(2)*GB
(3)*PVT(9,i,j,k)/(GB(1))
131 IF (BOUNDARY(2).ne.0) THEN
132 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(9,i,j,k)/(GB(1)
)*BOUNDARY(2)
133 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(9,i,j,k)/(GB
(1))
134 END IF
135 A(l,l) = A(l,l)-A(l,l-1)
136 ELSE
137 A(l,l+1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i+1,j,k)))*GB(2)*GB
(3)*PVT(9,i,j,k)/(GB(1))
138 A(l,l-1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i-1,j,k)))*GB(2)*GB
(3)*PVT(9,i,j,k)/(GB(1))
139 A(l,l) = A(l,l)-A(l,l-1)-A(l,l+1)
140 END IF
141 IF (j.eq.1) THEN
142 A(l,l+x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j+1,k)))*GB(1)*GB
(3)*PVT(9,i,j,k)/(GB(2))
143 IF (BOUNDARY(3).ne.0) THEN
144 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(9,i,j,k)/(GB(2)
)*BOUNDARY(3)
145 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(9,i,j,k)/(GB
(2))
146 END IF
APÊNDICE A. Código Desenvolvido 57
147 A(l,l) = A(l,l)-A(l,l+x)
148 ELSE IF (j.eq.y) THEN
149 A(l,l-x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j-1,k)))*GB(1)*GB
(3)*PVT(9,i,j,k)/(GB(2))
150 IF (BOUNDARY(4).ne.0) THEN
151 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(9,i,j,k)/(GB(2)
)*BOUNDARY(4)
152 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(9,i,j,k)/(GB
(1))
153 END IF
154 A(l,l) = A(l,l)-A(l,l-x)
155 ELSE
156 A(l,l+x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j+1,k)))*GB(1)*GB
(3)*PVT(9,i,j,k)/(GB(2))
157 A(l,l-x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j-1,k)))*GB(1)*GB
(3)*PVT(9,i,j,k)/(GB(2))
158 A(l,l) = A(l,l)-A(l,l-x)-A(l,l+x)
159 END IF
160 IF (k.eq.1) THEN
161 A(l,l+x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(9,i,j,k)/(GB(3))
162 B(l) = B(l) + 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(9,i,j,k)*SPVT(1)*GB(3)/(GB(3))
163 IF (BOUNDARY(5).ne.0) THEN
164 B(l) = B(l) - 0.006328*ROCK(1,i,j,k)*GB(2)*GB(3)*PVT(9,i,j,k)/(GB(1)
)*BOUNDARY(5)
165 A(l,l) = A(l,l)-0.006328*ROCK(1,i,j,k)*GB(2)*GB(3)*PVT(9,i,j,k)/(GB
(1))
166 END IF
167 A(l,l) = A(l,l)-A(l,l+x*y)
168 ELSE IF (k.eq.z) THEN
169 A(l,l-x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*
GB(1)*PVT(9,i,j,k)/(GB(3))
170 B(l) = B(l) - 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*
GB(1)*PVT(9,i,j,k)*SPVT(1)*GB(3)/(GB(3))
171 IF (BOUNDARY(6).ne.0) THEN
172 B(l) = B(l) - 0.006328*ROCK(1,i,j,k)*GB(2)*GB(1)*PVT(9,i,j,k)/(GB(3)
)*BOUNDARY(6)
173 A(l,l) = A(l,l)-0.006328*ROCK(1,i,j,k)*GB(2)*GB(1)*PVT(9,i,j,k)/(GB
(3))
174 END IF
175 A(l,l) = A(l,l)-A(l,l-x*y)
APÊNDICE A. Código Desenvolvido 58
176 ELSE
177 A(l,l+x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(9,i,j,k)/(GB(3))
178 A(l,l-x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*
GB(1)*PVT(9,i,j,k)/(GB(3))
179 B(l) = B(l) + 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(9,i,j,k)*SPVT(1)*GB(3)/(GB(3)) - 0.006328*(2/(1/ROCK(1,i
,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*GB(1)*PVT(9,i,j,k)*SPVT(1)*GB(3)/(
GB(3))
180 A(l,l) = A(l,l)-A(l,l-x*y)-A(l,l+x*y)
181 END IF
182 IF (WELLS(i,j,k,1).ne.0) THEN
183 IF (WELLS(i,j,k,2).eq.0) THEN
184 B(l) = B(l)+0.00708*ROCK(2,i,j,k)*PVT(9,i,j,k)*GB(3)*(R(2,i,j,k)/2-
WELLS(i,j,k,5))/((LOG(SQRT(GB(1)*GB(2)/Pi)/WELLS(i,j,k,6))-0.75+
WELLS(i,j,k,7)))
185 A(l,l) = A(l,l)-0.00708*ROCK(2,i,j,k)*PVT(9,i,j,k)*GB(3)/((LOG(SQRT(
GB(1)*GB(2)/Pi)/WELLS(i,j,k,6))-0.75+WELLS(i,j,k,7)))
186 ELSE IF (WELLS(i,j,k,2).eq.1) THEN
187 B(l) = B(l)-0.00708*ROCK(2,i,j,k)*PVT(9,i,j,k)*GB(3)*(R(2,i,j,k)/2-
WELLS(i,j,k,5))/(PVT(2,i,j,k)*PVT(1,i,j,k)*(LOG(SQRT(GB(1)*GB(2)/
Pi)/WELLS(i,j,k,6))-0.75+WELLS(i,j,k,7)))
188 A(l,l) = A(l,l)+0.00708*ROCK(2,i,j,k)*PVT(9,i,j,k)*GB(3)/(PVT(2,i,j,k
)*PVT(1,i,j,k)*(LOG(SQRT(GB(1)*GB(2)/Pi)/WELLS(i,j,k,6))-0.75+
WELLS(i,j,k,7)))
189 END IF
190 END IF
191 A(l,l+3*x*y*z) = GB(1)*GB(2)*GB(3)/tstep*ROCK(3,i,j,k)
192 B(l) = B(l) + GB(1)*GB(2)*GB(3)/tstep*ROCK(3,i,j,k)*R(5,i,j,k)
193 i=i+1
194 IF (i.gt.x) THEN
195 i=1
196 j=j+1
197 END IF
198 IF (j.gt.y) THEN
199 j=1
200 k=k+1
201 END IF
202 IF (k.gt.z) THEN
203 k=1
204 var=’GAS’
205 END IF
APÊNDICE A. Código Desenvolvido 59
206 ELSE IF (var.eq.’GAS’) THEN !Generates the section of the matrix that
relates with gas equations.
207 ! Here starts the gas equations. Those equations doesn’t consider the
Dissolved Gas.
208 IF (i.eq.1) THEN
209 A(l,l+1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i+1,j,k)))*GB(2)*GB
(3)*PVT(10,i,j,k)/(GB(1)*PVT(7,i,j,k)*PVT(8,i,j,k))
210 IF (BOUNDARY(1).ne.0) THEN
211 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(10,i,j,k)/(GB
(1)*PVT(7,i,j,k)*PVT(8,i,j,k))*BOUNDARY(1)
212 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(10,i,j,k)/(GB
(1)*PVT(7,i,j,k)*PVT(8,i,j,k))
213 END IF
214 A(l,l) = A(l,l)-A(l,l+1)
215 ELSE IF (i.eq.x) THEN
216 A(l,l-1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i-1,j,k)))*GB(2)*GB
(3)*PVT(10,i,j,k)/(GB(1)*PVT(7,i,j,k)*PVT(8,i,j,k))
217 IF (BOUNDARY(2).ne.0) THEN
218 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(10,i,j,k)/(GB
(1)*PVT(7,i,j,k)*PVT(8,i,j,k))*BOUNDARY(2)
219 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(10,i,j,k)/(GB
(1)*PVT(7,i,j,k)*PVT(8,i,j,k))
220 END IF
221 A(l,l) = A(l,l)-A(l,l-1)
222 ELSE
223 A(l,l+1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i+1,j,k)))*GB(2)*GB
(3)*PVT(10,i,j,k)/(GB(1)*PVT(7,i,j,k)*PVT(8,i,j,k))
224 A(l,l-1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i-1,j,k)))*GB(2)*GB
(3)*PVT(10,i,j,k)/(GB(1)*PVT(7,i,j,k)*PVT(8,i,j,k))
225 A(l,l) = A(l,l)-A(l,l-1)-A(l,l+1)
226 END IF
227 IF (j.eq.1) THEN
228 A(l,l+x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j+1,k)))*GB(1)*GB
(3)*PVT(10,i,j,k)/(GB(2)*PVT(7,i,j,k)*PVT(8,i,j,k))
229 IF (BOUNDARY(3).ne.0) THEN
230 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(10,i,j,k)/(GB
(2)*PVT(7,i,j,k)*PVT(8,i,j,k))*BOUNDARY(3)
231 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(10,i,j,k)/(GB
(2)*PVT(7,i,j,k)*PVT(8,i,j,k))
232 END IF
233 A(l,l) = A(l,l)-A(l,l+x)
234 ELSE IF (j.eq.y) THEN
APÊNDICE A. Código Desenvolvido 60
235 A(l,l-x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j-1,k)))*GB(1)*GB
(3)*PVT(10,i,j,k)/(GB(2)*PVT(7,i,j,k)*PVT(8,i,j,k))
236 IF (BOUNDARY(4).ne.0) THEN
237 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(10,i,j,k)/(GB
(2)*PVT(7,i,j,k)*PVT(8,i,j,k))*BOUNDARY(4)
238 A(l,l) = A(l,l)-0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(10,i,j,k)/(GB
(2)*PVT(7,i,j,k)*PVT(8,i,j,k))
239 END IF
240 A(l,l) = A(l,l)-A(l,l-x)
241 ELSE
242 A(l,l+x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j+1,k)))*GB(1)*GB
(3)*PVT(10,i,j,k)/(GB(2)*PVT(7,i,j,k)*PVT(8,i,j,k))
243 A(l,l-x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j-1,k)))*GB(1)*GB
(3)*PVT(10,i,j,k)/(GB(2)*PVT(7,i,j,k)*PVT(8,i,j,k))
244 A(l,l) = A(l,l)-A(l,l-x)-A(l,l+x)
245 END IF
246 IF (k.eq.1) THEN
247 A(l,l+x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(10,i,j,k)/(GB(3)*PVT(7,i,j,k)*PVT(8,i,j,k))
248 B(l) = B(l) + 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(10,i,j,k)*SPVT(2)*GB(3)/(GB(3)*PVT(7,i,j,k)*PVT(8,i,j,k)
)
249 IF (BOUNDARY(5).ne.0) THEN
250 B(l) = B(l) - 0.006328*ROCK(1,i,j,k)*GB(2)*GB(1)*PVT(10,i,j,k)/(GB
(3)*PVT(7,i,j,k)*PVT(8,i,j,k))*BOUNDARY(5)
251 A(l,l) = A(l,l)-0.006328*ROCK(1,i,j,k)*GB(2)*GB(1)*PVT(10,i,j,k)/(GB
(3)*PVT(7,i,j,k)*PVT(8,i,j,k))
252 END IF
253 A(l,l) = A(l,l)-A(l,l+x*y)
254 ELSE IF (k.eq.z) THEN
255 A(l,l-x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*
GB(1)*PVT(10,i,j,k)/(GB(3)*PVT(7,i,j,k)*PVT(8,i,j,k))
256 B(l) = B(l) - 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*
GB(1)*PVT(10,i,j,k)*SPVT(2)*GB(3)/(GB(3)*PVT(7,i,j,k)*PVT(8,i,j,k)
)
257 IF (BOUNDARY(6).ne.0) THEN
258 B(l) = B(l) - 0.006328*ROCK(1,i,j,k)*GB(2)*GB(3)*PVT(10,i,j,k)/(GB
(1)*PVT(7,i,j,k)*PVT(8,i,j,k))*BOUNDARY(6)
259 A(l,l) = A(l,l)-0.006328*ROCK(1,i,j,k)*GB(2)*GB(3)*PVT(10,i,j,k)/(GB
(1)*PVT(7,i,j,k)*PVT(8,i,j,k))
260 END IF
261 A(l,l) = A(l,l)-A(l,l-x*y)
APÊNDICE A. Código Desenvolvido 61
262 ELSE
263 A(l,l+x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(10,i,j,k)/(GB(3)*PVT(7,i,j,k)*PVT(8,i,j,k))
264 A(l,l-x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*
GB(1)*PVT(10,i,j,k)/(GB(3)*PVT(7,i,j,k)*PVT(8,i,j,k))
265 B(l) = B(l) + 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(10,i,j,k)*SPVT(2)*GB(3)/(GB(3)*PVT(7,i,j,k)*PVT(8,i,j,k)
) - 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*GB(1)*
PVT(10,i,j,k)*SPVT(2)*GB(3)/(GB(3)*PVT(7,i,j,k)*PVT(8,i,j,k))
266 A(l,l) = A(l,l)-A(l,l-x*y)-A(l,l+x*y)
267 END IF
268 ! Here starts the Dissolved Gas equations.
269 IF (i.eq.1) THEN
270 A(l,-2*x*y*z+l+1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i+1,j,k)))*
GB(2)*GB(3)*PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,
i,j,k)+PVT(6,i+1,j,k))/2
271 IF (BOUNDARY(1).ne.0) THEN
272 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(3,i,j,k)/(GB(1)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(1)*(PVT(6,i,j,k))
273 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*
PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,i,j,k))
274 END IF
275 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-A(l,-2*x*y*z+l+1)
276 ELSE IF (i.eq.x) THEN
277 A(l,-2*x*y*z+l-1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i-1,j,k)))*
GB(2)*GB(3)*PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,
i,j,k)+PVT(6,i-1,j,k))/2
278 IF (BOUNDARY(2).ne.0) THEN
279 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*PVT(3,i,j,k)/(GB(1)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(2)*(PVT(6,i,j,k))
280 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-0.006328*ROCK(2,i,j,k)*GB(2)*GB(3)*
PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,i,j,k))
281 END IF
282 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-A(l,-2*x*y*z+l-1)
283 ELSE
284 A(l,-2*x*y*z+l+1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i+1,j,k)))*
GB(2)*GB(3)*PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,
i,j,k)+PVT(6,i+1,j,k))/2
285 A(l,-2*x*y*z+l-1) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i-1,j,k)))*
GB(2)*GB(3)*PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,
i,j,k)+PVT(6,i-1,j,k))/2
286 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-A(l,-2*x*y*z+l-1)-A(l,-2*x*y*z+l+1)
APÊNDICE A. Código Desenvolvido 62
287 END IF
288 IF (j.eq.1) THEN
289 A(l,-2*x*y*z+l+x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j+1,k)))*
GB(1)*GB(3)*PVT(3,i,j,k)/(GB(2)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,
i,j,k)+PVT(6,i,j+1,k))/2
290 IF (BOUNDARY(3).ne.0) THEN
291 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(3,i,j,k)/(GB(2)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(3)*(PVT(6,i,j,k))
292 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*
PVT(3,i,j,k)/(GB(2)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,i,j,k))
293 END IF
294 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-A(l,-2*x*y*z+l+x)
295 ELSE IF (j.eq.y) THEN
296 A(l,-2*x*y*z+l-x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j-1,k)))*
GB(1)*GB(3)*PVT(3,i,j,k)/(GB(2)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,
i,j,k)+PVT(6,i,j-1,k))/2
297 IF (BOUNDARY(4).ne.0) THEN
298 B(l) = B(l) - 0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*PVT(3,i,j,k)/(GB(2)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(4)*(PVT(6,i,j,k))
299 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-0.006328*ROCK(2,i,j,k)*GB(1)*GB(3)*
PVT(3,i,j,k)/(GB(2)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,i,j,k))
300 END IF
301 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-A(l,-2*x*y*z+l-x)
302 ELSE
303 A(l,-2*x*y*z+l+x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j+1,k)))*
GB(1)*GB(3)*PVT(3,i,j,k)/(GB(2)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,
i,j,k)+PVT(6,i,j+1,k))/2
304 A(l,-2*x*y*z+l-x) = 0.006328*(2/(1/ROCK(2,i,j,k)+1/ROCK(2,i,j-1,k)))*
GB(1)*GB(3)*PVT(3,i,j,k)/(GB(2)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,
i,j,k)+PVT(6,i,j-1,k))/2
305 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-A(l,-2*x*y*z+l-x)-A(l,-2*x*y*z+l+x)
306 END IF
307 IF (k.eq.1) THEN
308 A(l,-2*x*y*z+l+x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1))
)*GB(2)*GB(1)*PVT(3,i,j,k)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT
(6,i,j,k)+PVT(6,i,j,k+1))/2
309 B(l) = B(l) + 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(3,i,j,k)*SPVT(3)*GB(3)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
*(PVT(6,i,j,k)+PVT(6,i,j,k+1))/2
310 IF (BOUNDARY(5).ne.0) THEN
311 B(l) = B(l) - 0.006328*ROCK(1,i,j,k)*GB(2)*GB(1)*PVT(3,i,j,k)/(GB(3)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(5)*(PVT(6,i,j,k))
APÊNDICE A. Código Desenvolvido 63
312 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-0.006328*ROCK(1,i,j,k)*GB(2)*GB(1)*
PVT(3,i,j,k)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,i,j,k))
313 END IF
314 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-A(l,-2*x*y*z+l+x*y)
315 ELSE IF (k.eq.z) THEN
316 A(l,-2*x*y*z+l-x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1))
)*GB(2)*GB(1)*PVT(3,i,j,k)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT
(6,i,j,k)+PVT(6,i,j,k-1))/2
317 B(l) = B(l) - 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1)))*GB(2)*
GB(1)*PVT(3,i,j,k)*SPVT(3)*GB(3)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
*(PVT(6,i,j,k)+PVT(6,i,j,k-1))/2
318 IF (BOUNDARY(6).ne.0) THEN
319 B(l) = B(l) - 0.006328*ROCK(1,i,j,k)*GB(2)*GB(3)*PVT(3,i,j,k)/(GB(1)
*PVT(2,i,j,k)*PVT(1,i,j,k))*BOUNDARY(6)*(PVT(6,i,j,k))
320 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-0.006328*ROCK(1,i,j,k)*GB(2)*GB(3)*
PVT(3,i,j,k)/(GB(1)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,i,j,k))
321 END IF
322 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-A(l,-2*x*y*z+l-x*y)
323 ELSE
324 A(l,-2*x*y*z+l+x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1))
)*GB(2)*GB(1)*PVT(3,i,j,k)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT
(6,i,j,k)+PVT(6,i,j,k+1))/2
325 A(l,-2*x*y*z+l-x*y) = 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k-1))
)*GB(2)*GB(1)*PVT(3,i,j,k)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT
(6,i,j,k)+PVT(6,i,j,k-1))/2
326 B(l) = B(l) + 0.006328*(2/(1/ROCK(1,i,j,k)+1/ROCK(1,i,j,k+1)))*GB(2)*
GB(1)*PVT(3,i,j,k)*SPVT(3)*GB(3)/(GB(3)*PVT(2,i,j,k)*PVT(1,i,j,k))
*(PVT(6,i,j,k)+PVT(6,i,j,k+1))/2 - 0.006328*(2/(1/ROCK(1,i,j,k)+1/
ROCK(1,i,j,k-1)))*GB(2)*GB(1)*PVT(3,i,j,k)*SPVT(3)*GB(3)/(GB(3)*
PVT(2,i,j,k)*PVT(1,i,j,k))*(PVT(6,i,j,k)+PVT(6,i,j,k-1))/2
327 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-A(l,-2*x*y*z+l-x*y)-A(l,-2*x*y*z+l+
x*y)
328 END IF
329 IF (WELLS(i,j,k,1).ne.0) THEN
330 IF (WELLS(i,j,k,2).eq.0) THEN
331 B(l) = B(l)+0.00708*ROCK(2,i,j,k)*PVT(10,i,j,k)*GB(3)*(R(2,i,j,k)/2-
WELLS(i,j,k,5))/(PVT(7,i,j,k)*PVT(8,i,j,k)*(LOG(SQRT(GB(1)*GB(2)/
Pi)/WELLS(i,j,k,6))-0.75+WELLS(i,j,k,7)))
332 A(l,l) = A(l,l)-0.00708*ROCK(2,i,j,k)*PVT(10,i,j,k)*GB(3)/(PVT(7,i,j,
k)*PVT(8,i,j,k)*(LOG(SQRT(GB(1)*GB(2)/Pi)/WELLS(i,j,k,6))-0.75+
WELLS(i,j,k,7)))
APÊNDICE A. Código Desenvolvido 64
333 B(l) = B(l)+0.00708*ROCK(2,i,j,k)*PVT(3,i,j,k)*GB(3)*(R(1,i,j,k)/2-
WELLS(i,j,k,5))/(PVT(2,i,j,k)*PVT(1,i,j,k)*(LOG(SQRT(GB(1)*GB(2)/
Pi)/WELLS(i,j,k,6))-0.75+WELLS(i,j,k,7)))*(PVT(6,i,j,k))
334 A(l,-2*x*y*z+l) = A(l,-2*x*y*z+l)-0.00708*ROCK(2,i,j,k)*PVT(3,i,j,k)*
GB(3)/(PVT(2,i,j,k)*PVT(1,i,j,k)*(LOG(SQRT(GB(1)*GB(2)/Pi)/WELLS(i
,j,k,6))-0.75+WELLS(i,j,k,7)))*(PVT(6,i,j,k))
335 ELSE IF (WELLS(i,j,k,2).eq.1) THEN
336 B(l) = B(l)-0.00708*ROCK(2,i,j,k)*PVT(10,i,j,k)*GB(3)*(R(2,i,j,k)/2-
WELLS(i,j,k,5))/(PVT(7,i,j,k)*PVT(8,i,j,k)*(LOG(SQRT(GB(1)*GB(2)/
Pi)/WELLS(i,j,k,6))-0.75+WELLS(i,j,k,7)))
337 A(l,l) = A(l,l)+0.00708*ROCK(2,i,j,k)*PVT(10,i,j,k)*GB(3)/(PVT(7,i,j,
k)*PVT(8,i,j,k)*(LOG(SQRT(GB(1)*GB(2)/Pi)/WELLS(i,j,k,6))-0.75+
WELLS(i,j,k,7)))
338 END IF
339 END IF
340 A(l,l+3*x*y*z) = GB(1)*GB(2)*GB(3)/tstep*ROCK(3,i,j,k)
341 B(l) = B(l) + GB(1)*GB(2)*GB(3)/tstep*ROCK(3,i,j,k)*R(5,i,j,k)
342 A(l,l+x*y*z) = GB(1)*GB(2)*GB(3)/tstep*ROCK(3,i,j,k)/PVT(2,i,j,k)*(
PVT(6,i,j,k))
343 B(l) = B(l) + GB(1)*GB(2)*GB(3)/tstep*ROCK(3,i,j,k)/PVT(2,i,j,k)*R(4,
i,j,k)*(PVT(6,i,j,k))
344 i=i+1
345 IF (i.gt.x) THEN
346 i=1
347 j=j+1
348 END IF
349 IF (j.gt.y) THEN
350 j=1
351 k=k+1
352 END IF
353 IF (k.gt.z) THEN
354 k=1
355 var=’SAT’
356 END IF
357 ELSE IF (var.eq.’SAT’) THEN
358 A(l,l) = 1
359 A(l,x*y*z+l) = 1
360 A(l,2*x*y*z+l) = 1
361 B(l) = 1
362 i=i+1
363 IF (i.gt.x) THEN
364 i=1
APÊNDICE A. Código Desenvolvido 65
365 j=j+1
366 END IF
367 IF (j.gt.y) THEN
368 j=1
369 k=k+1
370 END IF
371 IF (k.gt.z) THEN
372 k=1
373 var=’COW’
374 END IF
375 ELSE IF (var.eq.’COW’) THEN
376 A(l,l-4*x*y*z) = 1
377 A(l,l-3*x*y*z) = -1
378 B(l) = PVT(4,i,j,k)
379 i=i+1
380 IF (i.gt.x) THEN
381 i=1
382 j=j+1
383 END IF
384 IF (j.gt.y) THEN
385 j=1
386 k=k+1
387 END IF
388 IF (k.gt.z) THEN
389 k=1
390 var=’COG’
391 END IF
392 ELSE IF (var.eq.’COG’) THEN
393 A(l,l-5*x*y*z) = 1
394 A(l,l-3*x*y*z) = -1
395 B(l) = PVT(5,i,j,k)
396 i=i+1
397 IF (i.gt.x) THEN
398 i=1
399 j=j+1
400 END IF
401 IF (j.gt.y) THEN
402 j=1
403 k=k+1
404 END IF
405 IF (k.gt.z) THEN
406 k=1
APÊNDICE A. Código Desenvolvido 66
407 var=’END’
408 END IF
409 END IF
410 END DO
411 i=1
412 j=1
413 k=1
414 counter=1
415 DO l=1,n,1 !this section creates the initial guess
416 GUESS(l) = R(counter,i,j,k)
417 i=i+1
418 IF (i.gt.x) THEN
419 i=1
420 j=j+1
421 END IF
422 IF (j.gt.y) THEN
423 j=1
424 k=k+1
425 END IF
426 IF (k.gt.z) THEN
427 k=1
428 counter = counter + 1
429 END IF
430 END DO
431 dA = A
432 call sgefa(dA,n,n,ipvt,info)
433 call sgedi(dA,n,n,ipvt,det,work,01)
434 GUESSold = GUESS
435 counter = 1
436 DO WHILE (test.eq.0)
437 counter = counter + 1
438 RT = (MATMUL(A,GUESS)-B)
439 GUESS = GUESS + MATMUL(dA,RT)
440 DO l=1,n,1
441 diff = diff + abs(GUESS(l)-GUESSold(l))
442 END DO
443 IF (diff.le.SETUP(2)) THEN
444 test=1
445 END if
446 IF (counter.gt.setup(1)) then
447 test=2
448 PRINT*, "The process didn’t converge after", counter, "iterations"
APÊNDICE A. Código Desenvolvido 67
449 PRINT*, "In order to proceed, it will be used the last guess"
450 call system (’pause’)
451 END IF
452 END DO
453 CALL exportar(x, y, z, n,GUESS, RRES, R, GB, ROCK, PVT)
454
455 END SUBROUTINE
456
457 SUBROUTINE exportar(x, y, z, n,GUESS, RRES, R, GB, ROCK, PVT)
458 INTEGER i, j, k, l, m, n, x, y, z
459 REAL GUESS(n), RRES(6), R(6,x,y,z), GB(3), ROCK(3,x,y,z), PVT(10,x,y,
z)
460
461 i = 1
462 j = 1
463 k = 1
464 m = 1
465 RRES = 0
466
467 DO l=1,n,1
468 R(m,i,j,k) = GUESS(l)
469 i=i+1
470 IF (i .gt. x) THEN
471 i=1
472 j=j+1
473 END IF
474 IF (j .gt. y) THEN
475 j=1
476 k=k+1
477 END IF
478 IF (k .gt. z) THEN
479 k=1
480 m=m+1
481 END IF
482 END DO
483 DO i=1,x,1
484 DO j=1,y,1
485 DO k=1,z,1
486 RRES(1) = RREES(1) + GB(1)*GB(2)*GB(3)*ROCK(3,i,j,k)*R(4,i,j,k)/PVT
(2,x,y,z)
487 RRES(2) = RREES(2) + GB(1)*GB(2)*GB(3)*ROCK(3,i,j,k)*R(5,i,j,k)
APÊNDICE A. Código Desenvolvido 68
488 RRES(3) = RREES(3) + GB(1)*GB(2)*GB(3)*ROCK(3,i,j,k)*R(4,i,j,k)*PVT
(6,i,j,k)/PVT(2,x,y,z) + GB(1)*GB(2)*GB(3)*ROCK(3,i,j,k)*R(6,i,j,k
)/PVT(7,x,y,z)
489 END DO
490 END DO
491 END DO
492 END SUBROUTINE
69
APÊNDICE B – Input utilizado nosestudos de caso
Tabela 1 – Caso 1 – Reservatório convencional
Propriedade Valor utilizadoPressão inicial no Datum 2500 psiVazão do poço Restrito a 1500 BBL/diaPermeabilidade 70 mDPorosidade 20%Saturação de óleo 50%Saturação de água 30%Saturação de gás 20%Número de blocos 500Dimensões 10x10x5 blocos∆x 100 ft∆y 100 ft∆z 10 ftPcow 0.9 psiPcog 0.3 psi
Tabela 2 – Caso 2 – Reservatório com ausência de capa de gás
Propriedade Valor utilizadoPressão inicial no Datum 2500 psiVazão do poço Restrito a 1500 BBL/diaPermeabilidade 70 mDPorosidade 20%Saturação de óleo 65%Saturação de água 35%Saturação de gás 00%Número de blocos 500Dimensões 10x10x5 blocos∆x 100 ft∆y 100 ft∆z 10 ftPcow 0.7 psiPcog 0.3 psi
APÊNDICE B. Input utilizado nos estudos de caso 70
Tabela 3 – Reservatório quantidade reduzida de água de formação
Propriedade Valor utilizadoPressão inicial no Datum 2500 psiVazão do poço Restrito a 1500 BBL/diaPermeabilidade 70 mDPorosidade 20%Saturação de óleo 75%Saturação de água 05%Saturação de gás 20%Número de blocos 500Dimensões 10x10x5 blocos∆x 100 ft∆y 100 ft∆z 10 ftPcow 2.3 psiPcog 0.3 psi