Trabalho final pronto 30-11-10

76
Seminários de Matemática Aplicada e Pesquisa em Ensino Prática IV CONTAMINAÇÃO METROPOLITANA DO RIO CUIABÁ: MODELAGEM E SIMULAÇÃO DE CENÁRIOS Luiz Fernando de Moraes Campos Filho Orientador: Prof. Dr. Geraldo Lucio Diniz NOVEMBRO/2010 2010/2 INSTITUTO DE CIÊNCIAS EXATAS E DA TERRA UFMT UNIVERSIDADE FEDERAL DE MATO GROSSO

description

Meu trabalho de conclusão de Curso - TCC

Transcript of Trabalho final pronto 30-11-10

Page 1: Trabalho final pronto   30-11-10

Seminários de Matemática Aplicada e Pesquisa em Ensino – Prática IV

CONTAMINAÇÃO METROPOLITANA DO

RIO CUIABÁ: MODELAGEM E SIMULAÇÃO

DE CENÁRIOS

Luiz Fernando de Moraes Campos Filho

Orientador: Prof. Dr. Geraldo Lucio Diniz

NOVEMBRO/2010 2010/2

INSTITUTO DE CIÊNCIAS EXATAS E DA TERRA

UFMT

UNIVERSIDADE FEDERAL DE MATO GROSSO

Page 2: Trabalho final pronto   30-11-10

CONTAMINAÇÃO METROPOLITANA DO RIO CUIABÁ:

MODELAGEM E SIMULAÇÃO DE CENÁRIOS

Luiz Fernando De Moraes Campos Filho

Como orientador do trabalho

Contaminação Metropolitana do Rio

Cuiabá: Modelagem e simulação de

Cenários, realizado pelo discente Luiz

Fernando de Moraes Campos Filho,

aprovo esta versão final, como requisito

para disciplina “Prática de Ensino de

Matemática IV – Seminários de

Matemática Aplicada e Pesquisa em

Ensino”.

Cuiabá, 26 de novembro de 2010.

Geraldo Lúcio Diniz

Page 3: Trabalho final pronto   30-11-10

CONTAMINAÇÃO METROPOLITANA DO RIO CUIABÁ:

MODELAGEM E SIMULAÇÃO DE CENÁRIOS

Metropolitan Contamination of Cuiaba River:

Modelling and simulations of scenarios

Luiz Fernando de Moraes Campos Filho

Discente do Curso de Licenciatura Plena em Matemática

Orientador: Geraldo Lúcio Diniz

Professor do Departamento de Matemática da UFMT

RESUMO

Neste relatório são apresentados o modelo matemático, as aproximações

numéricas e as simulações obtidas através do estudo do problema da

contaminação de um trecho urbano do rio Cuiabá por esgoto. No estudo foi

considerado apenas o meio aquático, tendo como objetivo avaliar a

degradação ambiental deste rio, de grande importância para as populações

ribeirinhas.

Palavras-chave: Dispersão de esgoto. Contaminação de rio. Método de diferenças

finitas.

ABSTRACT

In this paper a mathematical model is presented, including the numerical

approximations and simulations obtained by the studied problem of

contamination for the urban stretch of Cuiabá River by wastewater. In the

study, we considered only aquatic mean, of which goal was to model the

environmental degradation of this river, that has high importance for the

local population.

Key words: Dispersion of wastewater. Contamination of river. Finite differences

method.

Page 4: Trabalho final pronto   30-11-10

1 INTRODUÇÃO

A água é um dos recursos naturais mais intensamente utilizados. É fundamental

para a existência e manutenção da vida e, para isso, deve estar presente no ambiente em

quantidade e qualidade apropriadas.

Dentre os benefícios que a água promove ao ser humano estão: abastecimento

residencial, abastecimento industrial, irrigação, geração de energia elétrica, agricultura e

recreação. Todavia, se a água não estiver em condições apropriadas todos os benefícios

citados acima são perdidos.

Grande parte da água utilizada pelo ser humano vem de rios e lagos de água doce.

Logo a contaminação destes é um grave problema para o próprio ser humano. Uma das

principais causas de contaminação dos rios e lagos é o lançamento de esgoto em suas

águas e esse impacto ambiental pode ser um problema fatal a estes e conseqüentemente

aos seus usuários (Alegria e Diniz, 2007).

Outro dado importante também é que o volume de água na Terra está estimado em

1 trilhão e 386 bilhões de quilômetros cúbicos (Km3), sendo a maior parte - 97,2% desse

total - formada pela água salgada dos mares e oceanos. Algo como 1,8% da água total

está estocada sob a forma de neve ou gelo, no topo das grandes cadeias de montanhas

ou nas zonas polares. Outra porção é a água subterrânea, que abrange cerca de 0,9%

desse total, restando então a água atmosférica (0,001%) e os rios e lagos de água doce,

que ficam com somente 0,0092% dessa água do nosso planeta. Esta pequena quantia

vem sofrendo com os impactos ambientais causados pelo homem, correndo risco até de

num tempo muito curto se extinguir (Fonte do saber, 2010).

Dentre os rios que sofrem com este problema está o Rio Cuiabá. Este rio é de

grande importância para a população de Mato Grosso, pois sua bacia hidrográfica

abrange 75% da população do estado e a maioria desse total é constituído de habitantes

de Cuiabá e Várzea Grande. (Wolmuth e Diniz, 2005).

O crescimento populacional das cidades de Cuiabá e Várzea Grande e a falta de

infra-estrutura existente nelas vêm causando grandes prejuízos ambientais. Estas

cidades depositam, diariamente, cerca de 20 toneladas de resíduos sólidos (lixo

Page 5: Trabalho final pronto   30-11-10

doméstico) e 400 mil litros de esgoto doméstico e industrial no rio Cuiabá (Wolmuth e

Diniz, 2005).

Atualmente, cerca de 31% dos domicílios, em Cuiabá, estão conectados ao

sistema de saneamento, mas apenas 14% do esgoto coletado é tratado. Apesar de 80%

da cidade ter acesso a água canalizada, apenas 57% dos domicílios tem este serviço 24

horas por dia, o que mostra a necessidade de investimentos do poder público em

saneamento básico (Safford, 2009).

Pelos dados acima, se pode concluir que grande parte do esgoto não é tratada

adequadamente. Como solução “imediata” os órgãos responsáveis pelo saneamento

básico adotam a escolha do seu lançamento in natura nos corpos d’água,

comprometendo a qualidade da água, não apenas no local onde o esgoto é despejado,

mas em toda a sua bacia hidrográfica (Alegria e Diniz, 2007; Cunha e Ferreira, 2006).

A crescente degradação dos recursos hídricos, além de destruir os habitats

aquáticos e a biodiversidade, tem comprometido a própria saúde humana. Dessa forma,

a água passou a ser uma preocupação crescente não apenas no que se refere à

quantidade disponível, mas, principalmente, em relação à sua qualidade.

Para que se possa planejar uma maneira mais eficiente de implantar um sistema de

saneamento, que minimize os danos ao rio Cuiabá, é o que motivou o presente trabalho.

Neste sentido, será feito um estudo sobre a contaminação do rio Cuiabá por

esgoto, através de um modelo matemático (Meyer e Diniz, 2007), seguido de sua

discretização espacial e temporal, cujos resultados serão apresentados através de

simulações computacionais para os cenários das estações úmida e seca.

Como justificado acima, se espera que este trabalho possa servir para diagnóstico

e auxílio na adoção de políticas públicas de saneamento e mitigação da contaminação

do rio Cuiabá por esgoto.

Page 6: Trabalho final pronto   30-11-10

2 DESCRIÇÃO DO PROBLEMA

O rio Cuiabá é de grande importância para a sociedade mato-grossense. Esta

importância pode ser comprovada, uma vez que, historicamente, este rio é uma fonte de

vida e de recursos para o estado e, em particular, para a cidade de Cuiabá (Instituto

Ação Verde).

Sua bacia hidrográfica apresenta uma superfície de aproximadamente 28.000 km²

até as proximidades do município de Barão do Melgaço e estende-se entre os paralelos

14º18’ a 17º00’ S e 54º40’ a 56º55’ W (Cavinatto et al.,1995), sendo dividida em três

bacias: superior, mediana e inferior.

A parte superior fica perto da nascente do rio, constituída pelos municípios de

Jangada, Acorizal, Rosário Oeste, Chapada dos Guimarães, Campo Verde, Nova

Brasilândia e Planalto da Serra, este trecho possuí uma vegetação do tipo cerrado onde a

agricultura é uma atividade predominante.

A bacia mediana abrange os municípios de Cuiabá, Várzea Grande, Nossa

Senhora do Livramento e Santo Antonio do Leverger, também conhecida como baixada

cuiabana onde a declividade do rio diminui o que favorece o depósito de sedimentos no

fundo do leito, transportados, principalmente, no período de cheias. Estes sedimentos

provocam uma redução da lamina d’água e diminui a seção do rio, tornando-o

suscetível à inundações e, com o aumento da velocidade das águas no período de

cheias, o solapamento* das barrancas (Lima, 1994).

A bacia inferior abrange os municípios de Barão de Melgaço e Poconé. Este

trecho final é constituído de planícies de inundações que corresponde à região do

Pantanal. Neste trecho, o rio Cuiabá banha as baías de Chacororé, Sá Mariana e outras.

A bacia hidrográfica do rio Cuiabá é local de habitação de 75% da população de

Mato Grosso e a maioria, desse total, encontra-se nesses dois municípios. A captação de

água para abastecimento das duas cidades é feita à montante delas e todo esgoto aí

produzido é despejado diretamente no rio com pouco ou nenhum tratamento.

* Solapamento é sinônimo de ceder, desmoronar.

Page 7: Trabalho final pronto   30-11-10

A área de estudo corresponde ao trecho urbano do rio Cuiabá, compreendido entre

a Ponte Nova até a jusante do encontro com o rio Coxipó (ver figura 1). O rio Cuiabá,

neste trecho de estudo, possui aproximadamente 6,1 Km de comprimento e 0,2 Km de

largura (obtidos através da ferramenta métrica do Google Earth). O clima nesta região é

quente tropical, semi-úmido, com temperatura média anual de 26°C, com máximas

médias diárias ocorrendo nos meses de setembro a novembro e atingem 36°C, as médias

mínimas diárias ocorrem no mês de julho, chegando aos 15°C. A precipitação média

anual fica em torno de 1.342 mm/ano, de acordo com as séries temporais medidas entre

1989-2000 (INMET, 2000).

Figura 1: Mapa da área de estudo, obtido através do Google Earth.

Page 8: Trabalho final pronto   30-11-10

3 O MODELO MATEMÁTICO

Neste relatório, serão considerados apenas poluentes oriundos da Estação

Elevatória da Prainha, Córrego do Barbado, Rio Coxipó e dois córregos da cidade de

Várzea Grande. Estes poluentes, em relação ao ponto de origem (Ponte Nova), estão

distribuídos da seguinte forma: Estação da Prainha (A) a 1,45 km, Córrego do Barbado

(B) a 4,85 km, Córrego do Coxipó (C) a 6,06 km, Afluente 1 de Várzea Grande (D) a

3,86 km e Afluente 2 de Várzea Grande (E) a 4,53km (ver a figura 2, a seguir).

Figura 2: Descrição da Localização dos Poluentes no domínio Simplificado.

No modelo, devem ser avaliados os fenômenos de difusão efetiva, transporte

advectivo, a degradação global e as fontes poluidoras.

A difusão efetiva consiste na mistura do esgoto lançado no rio com a água

presente no corpo d’água, em termos microscópicos (movimento browniano).

Os corpos d’água não são estáticos. Eles apresentam um movimento próprio que

transporta um poluente do seu ponto de despejo para outras regiões. Este transporte é

feito pelo campo de velocidades da água e a este fenômeno de transporte é que

denominamos advecção.

A degradação global consiste na absorção do poluente pela biota, que

denominamos autodepuração pelo rio.

As fontes poluidoras são as entradas de efluentes que, neste trabalho,

consideramos cinco ao todo (ver figura 2).

Page 9: Trabalho final pronto   30-11-10

Chamando de C(x,y,t) a concentração de esgoto – medida em PPM (partes por

milhão) – no ponto (x,y) para o instante t, o modelo pode ser descrito, genericamente,

por:

C

difusão advecção decaimento fontet

(1)

onde,

Difusão - . Marchuk (1986);

Advecção - . Marchuk (1986);

Decaimento - . Bassanezi e Ferreira (1988);

div C cf

div VC cf

C cf

Assim, a equação evolutiva que modela a concentração de esgoto é dada por:

div div fonteC

C VC Ct

(2)

sendo,

α = a constante de difusibilidade efetiva no meio aquático.

V

= o campo de velocidades.

σ = a taxa de decaimento total no meio aquático.

Para o domínio Ω, cuja fronteira = 0 1 2 3 , se tem as seguintes

condições de contorno:

0 1 2 3

1 1 2 3 2

C C C C0, K D , K C, K D

(3)

Page 10: Trabalho final pronto   30-11-10

4 METODOLOGIA

4.1 Discretização do modelo:

Na construção de soluções aproximadas para equações diferenciais parciais, em

primeiro lugar, será feita a discretização do domínio e, para isso, se introduz uma malha

sobre a qual está definida a solução aproximada.

Seja R o conjunto de pontos onde a equação está definida e S o contorno deste

conjunto, sendo que a malha tem pontos igualmente espaçados nas duas direções, ou

seja, Δx = Δy = h .

A figura 2 ilustra a malha onde os pontos que estão representados por + são os

pontos de S e os demais são pontos de R.

Figura 3: Discretização do domínio.

4.1.1 Discretização espacial - método de diferenças finitas centradas.

Para a discretização espacial será utilizado o método de diferenças finitas

centradas, esta discretização envolve em cada ponto da malha, além do valor da solução

neste ponto, os valores que a solução assume nos quatro pontos adjacentes como ilustra

a figura 3.

Page 11: Trabalho final pronto   30-11-10

Figura 4: Ilustração gráfica do método de diferenças finitas centradas, para os nós

interiores.

A escolha do método de diferenças finitas centradas para a discretização espacial

é justificada por sua precisão, da ordem de h2, enquanto as fórmulas avante (forward) e

retrógradas (backward) fornecem uma aproximação da ordem de h.

No método de diferenças finitas centradas, as derivadas que aparecem na equação

diferencial (2) e (3) são substituídas pelas aproximações descritas por (4) a (13) a

seguir, onde os índices n e n+1 correspondem a discretização temporal, descrita na

seção seguinte.

Difusão:

2 2

2 2

C C C Cdiv C div ,

x y x y

(4)

Advecção:

1 2

C Cdiv VC V y V x, y

x y

(5)

onde,

Page 12: Trabalho final pronto   30-11-10

n n n 1 n 1

i ny i ny i ny i nyC C C CC

x 4. x 4. x

(6)

n n n 1 n 1

i 1 i 1 i 1 i 1C C C CC

y 4. y 4. y

(7)

n n n n 1 n 1 n 12i ny i i ny i ny i i ny

2 2 2

C 2.C C C 2.C CC

x 2. x 2. x

(8)

n n n n 1 n 1 n 12

i 1 i i 1 i 1 i i 1

2 2 2

C 2.C C C 2.C CC

y 2. y 2. y

(9)

Em 0 , se tem:

n 1 n 1 n n

i ny i 2ny i ny i 2ny4.C C 4.C CC. 0

4. x 4. x

(10)

Pois n 1

iC 0 e n

iC 0

Em 1 , se tem:

n n n n 1 n 1 n 1

i i 1 i 2 i i 1 i 21 1

3.C 4.C C 3.C 4.C CC. K D

4. y 4. y

(11)

Em 2 , se tem:

n 1 n 1 n 1 n n n

i i ny i 2ny i i ny i 2ny

2

3.C 4.C C 3.C 4.C CC. K .C

4. x 4. x

(12)

Em 3 , se tem:

n n n n 1 n 1 n 1

i i 1 i 2 i i 1 i 23 2

3.C 4.C C 3.C 4.C CC. K D

4. y 4. y

(13)

4.1.2 Discretização temporal - método Crank-Nicolson.

Page 13: Trabalho final pronto   30-11-10

Para a discretização temporal, será usado o método de Crank-Nicolson, por se

tratar de um método incondicionalmente estável, exceto para os casos de

descontinuidade da variável de estado, o que não é o caso. Neste caso, serão feitas as

aproximações dadas por (14) e (15), a seguir.

1

2

i n i ni n

C ( t ) C ( t )d tC t

dt t

(14)

Para as aproximações dadas anteriormente, o erro é da ordem de (Δt)², cf.

Carnaham (1969). Assim, quanto menor o passo no tempo, melhor a precisão da

aproximação.

1

2 2

n n

i in

C CtC t

(15)

4.2 Construção do sistema de Equações

Nesta etapa substituiremos os termos da equação (2) e da equação (3) pelas

aproximações propostas acima e obteremos um sistema de equações (considerando os

nós interiores e os nós da fronteira), cujo vetor solução do sistema nos dará como

resultado a solução aproximada sobre os nós da malha.

4.2.1 Construção do sistema para os pontos interiores da malha

Após a substituição dos termos da equação (2) pelas aproximações descritas

acima, se obtêm o seguinte sistema de equações:

Page 14: Trabalho final pronto   30-11-10

n 1 n 1 1i i ny2 2 2

n 1 n 11 2i ny i 12 2

n 1 2i 1 2

n

i 2 2

tV (y)t t t tC 1 C

x y 2 2 x 4 x

tV (y) tV (x, y)t tC C

2 x 4 x 2 y 4 y

tV (x, y)tC

2 y 4 y

t tC 1

x y

n 1i ny 2

n n1 2i ny i 12 2

n 2i 1 2

tV (y)t tC

2 2 x 4 x

tV (y) tV (x, y)t tC C

2 x 4 x 2 y 4 y

tV (x, y)tC t f

2 y 4 y

4.2.2 Construção do sistema de equação para os pontos de contorno da malha

De acordo com as condições de contorno (3), através da substituição dos termos

das equações (10) a (13) pelas aproximações acima, se tem que:

Em 0 , se tem:

n 1 n 1 n n

i ny i 2ny i ny i 2ny4.C C 4.C CC. 0

4. x 4. x

(16)

Fazendo as substituições, se obtêm o seguinte sistema:

i ny i ny

i 2ny i 2nyn 1 n

C C. .

C Cx 4 x x 4 x

Em 1 , se tem:

n n n n 1 n 1 n 1

i i 1 i 2 i i 1 i 21

3.C 4.C C 3.C 4.C CC. K C

4. y 4. y

(17)

Page 15: Trabalho final pronto   30-11-10

Após as substituições se obtêm o seguinte sistema:

i i

1 1i 1 i 1

i 2 i 2n 1 n

C CK K3 3

. C . C4 y 2 y 4 y 4 y 2 y 4 y

C C

Em 2 , se tem que:

n 1 n 1 n 1 n n n

i i ny i 2ny i i ny i 2ny

2

3.C 4.C C 3.C 4.C CC. K .C

4. x 4. x

(18)

Após as substituições se obtêm o seguinte sistema:

i i

2 2i ny i ny

i 2ny i 2nyn 1 n

C CK K3 3

. C . C4 x 2 x 4 x 4 x 2 x 4 x

C C

Em 3 , se tem que:

n n n n 1 n 1 n 1

i i 1 i 2 i i 1 i 23

3.C 4.C C 3.C 4.C CC. K C

4. y 4. y

(19)

Após as substituições, se obtêm o seguinte sistema:

i i

3 3i 1 i 1

i 2 i 2n 1 n

C CK K3 3

. C . C4 y 2 y 4 y 4 y 2 y 4 y

C C

Por fim, substituindo os termos da equação (2) e (3) pelas equações (4) a (19) e

fazendo a manipulação algébrica das equações, se obtém o sistema algébrico de

equações lineares, representado matricialmente na forma:

1n

n 1 n 2AC BC d

(16)

onde, 1nC é a solução aproximada procurada, para o instante n+1 e nC é a solução

aproximada para o instante n, a partir da condição inicial 0C .

Após a construção dos códigos numéricos se obteve a solução aproximada,

conforme as simulações computacionais apresentadas a seguir.

Page 16: Trabalho final pronto   30-11-10

5 RESULTADOS E DISCUSSÃO

Para o coeficiente de difusão, foram adotados três valores, considerando a difusão

baixa, média e alta. Para difusão baixa e alta os valores foram considerados de acordo

com Wolmuth e Diniz (2005), tendo os seguintes valores para o coeficiente de difusão

0,09 e 0,32 km²/h, respectivamente. Para a difusão média, o valor adotado foi de acordo

com Carreras e Menéndez (1990), cujo valor para o coeficiente de difusão foi de 0,23

km²/h.

O parâmetro de decaimento total do meio aquático foi estimado, pois não foi

possível encontrá-lo na literatura.

Em Rocha (2003), encontramos a media anual de velocidades para o trecho do rio

em estudo, onde é apresentado que a menor média ocorre no mês de julho, mês

considerado de estação seca, e consiste no valor de 1,7 km/h, enquanto a maior média

ocorre no mês de dezembro, mês considerado de estação úmida, cujo valor é 3,0 km/h.

Com isto, foram adotados os valores de 1,7 km/h e de 3,0 km/h para as estações seca e

úmida, respectivamente.

Para a discretização espacial adotamos ∆x = ∆y = 0,01 km, e para a discretização

temporal, adotamos ∆t = 0,4 horas.

A tabela abaixo mostra os valores dos parâmetros adotados para obter as

simulações dos cenários.

A simulação de cenários foi realizada considerando um intervalo de tempo t = 40

horas, tanto para estação seca quanto úmida.

Page 17: Trabalho final pronto   30-11-10

Tabela 1 - Parâmetros utilizados na simulação dos cenários

Valores

Parâmetros Estação Seca Estação Úmida Unidades

α

0,09† 0,09

km²/h 0,23‡ 0,23

0,32§ 0,32

σ 0,1 0,1 h-1

V1 1,7 3 Km/h

V2 (Estação Prainha) -0,1 -0,1 Km/h

V2 (Córrego do Barbado) -0,1 -0,1 Km/h

V2 (Córrego do Coxipó) -1,3 -1,3 Km/h

V2 (Afluente 1 de VG) 0,1 0,1 Km/h

V2 (Afluente 2 de VG) 0,2 0,2 Km/h

Com estes dados, foram obtidas as simulações para as estações seca (Figuras 5, 6 e

7), e úmida (figuras 8, 9 e 10), apresentadas a seguir.

† Difusão baixa ‡ Difusão média § Difusão Alta

Page 18: Trabalho final pronto   30-11-10

Figura 5. Concentração para 4 nós do domínio ao longo do tempo, na estação seca com

difusão baixa.

Figura 6. Concentração para 4 nós do domínio ao longo do tempo na estação seca com

difusão média.

Page 19: Trabalho final pronto   30-11-10

Figura 7. Concentração para 4 nós do domínio ao longo do tempo na estação seca com

difusão alta.

Figura 8. Concentração para 4 nós do domínio ao longo do tempo na estação úmida

com difusão baixa.

Page 20: Trabalho final pronto   30-11-10

Figura 9. Concentração para 4 nós do domínio ao longo do tempo na estação úmida

com difusão média.

Figura 10. Concentração para 4 nós do domínio ao longo do tempo na estação úmida

com difusão alta.

Page 21: Trabalho final pronto   30-11-10

De acordo com as simulações de cenários acima, observamos que na estação seca

há uma dispersão mais lenta e um maior nível de concentração de esgoto, ao contrário

da estação úmida, que apresentou uma dispersão mais rápida e um menor nível de

concentração de esgoto, para o mesmo intervalo de tempo estudado. Estes resultados

foram compatíveis, pois no período chuvoso a velocidade da correnteza é maior.

Observamos também que para os pontos próximos da fronteira 0 , isto é no

trecho inicial da área de estudo, o nível de concentração de esgoto é maior quando o

índice de difusão considerado é alto.

Já para os outros nós considerados valeu a seguinte lei: quanto maior for o índice

de difusão, menor será o nível de concentração de esgoto nos pontos de descarga.

Considerando os pontos próximos da região final da área de estudo, isto é, pontos sobre

a fronteira 2 , podemos concluir que sendo a difusão baixa e a estação seca então o

nível de concentração de esgoto é alto, enquanto o nível de concentração de esgoto

decresce em função da aumento do valor do coeficiente de difusão, chegando ao seu

valor mínimo de concentração, quando a difusão é alta e a estação é úmida. Estes

resultados se mostraram compatíveis com a realidade, pois quanto menor for o

coeficiente de difusão maior será a concentração de esgoto.

Em relação a trabalhos anteriores sobre o mesmo tipo de problema (Alegria e

Diniz, 2007; Wolmuth e Diniz, 2005; Carreras e Menéndez, 1990), este trabalho

apresenta algumas melhorias, com a inclusão de mais fontes poluidoras e melhor

precisão de resultados, uma vez que foi usada uma malha mais refinada (12.000 nós).

Page 22: Trabalho final pronto   30-11-10

6 CONCLUSÕES

Com base nos resultados obtidos para as simulações dos diferentes cenários,

podemos concluir que o código elaborado se mostrou eficaz para os parâmetros de

velocidade encontrados na literatura e o coeficiente de difusão considerado, de modo a

simular o processo de dispersão de poluentes no trecho do rio, apesar das oscilações

numéricas inerentes ao método de diferenças finitas, apresentadas nas primeiras

iterações, cuja estabilização ocorre ao longo do tempo, devido ao método de Crank-

Nicolson, que é incondicionalmente estável.

Desta forma, acreditamos que o modelo e o código numérico desenvolvidos sejam

ferramentas úteis. A apresentação gráfica dos resultados facilita a compreensão para os

não matemáticos, interessados neste tipo de estudo, o que permite a parceria com

pesquisadores de outras áreas e utilização por agentes da área ambiental. Neste sentido,

o trabalho pode servir para diagnóstico e auxílio na adoção de políticas públicas de

saneamento e mitigação da contaminação do rio Cuiabá pelo esgoto, que é um afluente

de grande importância para a planície pantaneira.

Page 23: Trabalho final pronto   30-11-10

7 REFERÊNCIAS BIBLIOGRÁFICAS:

ALEGRIA, A. F., DINIZ G. L. Estudo da poluição por esgoto num trecho urbano de

rio. Biomatemática, Campinas/SP, v. 17, 73-86, 2007.

BASSANESI, R. C.; FERREIRA Jr., W. C. Equações Diferenciais com Aplicações.

São Paulo: Ed. Harbra, 1988. 572p.

BRAGA, BENEDITO. Introdução Á Engenharia Ambiental. São Paulo: Ed. Prentice

Hall, 2002.

CARRERAS, P. E., MENÉNDEZ, A. M. Mathematical simulation of pollutant

dispersion. Ecological Modelling, Amsterdam, v. 52, 29-40, 1990.

CUNHA, C. Métodos Numéricos para as Engenharias e Ciências Aplicadas.

Campinas: Ed. Unicamp, 1993. 276p.

CUNHA, C. L. N.; FERREIRA, A. P. Modelagem matemática para avaliação dos

efeitos dos despejos orgânicos nas condições sanitárias de águas ambientais. Cadernos

de Saúde Pública, Rio de Janeiro, v. 22, n. 8, 1715-1725, 2006.

CARNAHAN, B; LUTHER, H. A; WILKES, J.D. Applied Numerical Methods,

N.York: John Wiley & Sons, Inc., 1969. 621p.

FONTE DO SABER. URL: http://www.fontedosaber.com/biologia/a-degradacao-do-

meio-ambiente.html. Acesso em: 23/11/2010.

INMET, Ministério da Agricultura e do Abastecimento, Delegacia Federal da

Agricultura – DFA/MT 9.º Distrito de Metereologia. Cuiabá/MT. 2000. Boletim da

Estação 2504600.

INSTITUTO AÇÃO VERDE. URL: http://www.acaoverde.org.br/rio_cuiaba.php.

Acesso em: 25/04/2010.

MARCHUK, G. I.. Mathematical models in environmental problems. Studies in

Mathematics and its Applications. Vol.16. North-Holland, Amsterdan. 1986. 217p.

Page 24: Trabalho final pronto   30-11-10

MEYER, J. F. C. A.; DINIZ, G L. Pollutant dispersion in wetland systems:

mathematical modelling and numerical simulation. Ecological Modelling, Amsterdam,

v.200, 360-370. 2007.

SAFFORD, T. G. Características gerais da bacia do rio Cuiabá. Disponível em:

http://www.portalnaturezaviva.org.br/RioCuiaba_CaracteristicasGerais_1.asp. Acesso

em: 11/12/2009.

WOLMUTH, L. D., DINIZ, G. L. Contaminação do Rio Cuiabá por Esgoto.

Relatório técnico, disponível em:

http://www.ufmt.br/icet/matematica/geraldo/relat_2005_1.pdf. Acesso em: 30/12/2009.

2005.

Page 25: Trabalho final pronto   30-11-10

AGRADECIMENTOS

Em primeiro lugar agradeço a Deus por todas as dádivas recebidas até o presente

momento.

Agradeço também a minha mãe Regina pela grande ajuda tanto no incentivo pelos

estudos como na luta para me dar condições adequadas para estudar.

Agradeço ao Professor Geraldo pela oportunidade que me deu, através da Iniciação

Cientifica e pelas eternas orientações ao longo da graduação.

Agradeço aos Professores do Departamento de Matemática da Universidade Federal

de Mato Grosso pela minha formação.

Ao Conselho Nacional de Pesquisa e Tecnologia (CNPq) agradeço pelo auxilio

financeiro durante a Bolsa de Iniciação Científica que gerou a base do presente trabalho.

A minha amiga Tatiana Leal, agradeço pelas correções de coerência na escrita do

trabalho.

Por fim, agradeço a todos os meus amigos mais chegados da graduação: Gilmar,

Renata, Thaís, Ericson, Lizias, Wilton e Ricardo pela companhia e sugestões.

Page 26: Trabalho final pronto   30-11-10

APÊNDICE

Códigos Numéricos

Neste apêndice são apresentados os códigos numéricos utilizados na

implementação do método escolhido para as aproximações da solução do problema. O

código foi elaborado em ambiente MATLAB®, gerando seis testes numéricos que são:

teste estação seca – difusão baixa; teste estação seca – difusão média; teste estação seca

– difusão alta; teste estação úmida – difusão baixa; teste estação úmida – difusão média

e teste estação úmida difusão alta, que serão apresentados à seguir, respectivamente.

1. Teste estação Seca - Difusão Baixa

1 % Programa preliminar p/ diferencas finitas

2 % Dispersao de esgoto no rio Cuiaba/MT - PIBIC Luiz Fernando

3 % sexta vesao - 26/11/2010 - Teste estação seca - Difusão Baixa

4 %

5 % Parametros do modelo

6 %

7 clear all; t0=clock; %format long;

8 alfa = 0.09; % coeficiente de difusão

9 sig = 0.1; % coeficiente de degradação

10 V1 = 1.7; % velocidade do rio

11 K1 = 0; % permeabilidade na fronteira Gama 1

12 K2 = 0; % permeabilidade na fronteira Gama 2

13 K3 = 0; % permeabilidade na fronteira Gama 3

14 %

15 % Parametros da discretizacao

16 %

17 xmin = 0; xmax = 6.0;

18 ymin = 0; ymax = 0.2;

Page 27: Trabalho final pronto   30-11-10

19 ti = 0; tf = 40;

20 nx = 600;

21 ny = 20;

22 nt = 100;

23 %

24 % Calculo de parametros auxiliares

25 %

26 nnx= nx+1; nny= ny+1; ntn = nnx*nny; dt = (tf - ti)/nt;

27 dx = (xmax - xmin)/nx;

28 dy = (ymax - ymin)/ny;

29 nau1 = round(nx/3)*nny;

30 nau2 = round(2*nx/3)*nny;

31 nau3 = round(nx/20)*nny;

32 nau4 = round(nx/2)*nny;

33 %

34 % Construcao do campo V2 -> velocidades na direcao y

35 %

36 V2 = zeros(ntn,1);

37 V2(ntn-nau3) = -1.3;

38 V2(ntn-nau3-nny) = -1.3;

39 V2(ntn-nau3-2*nny) = -1.3;

40 V2(nau4) = -.1;

41 V2(nau4+nny) = -.1;

42 V2(nau3) = -0.1;

43 V2(nau3+nny) = -0.1;

44 V2(nau3+2*nny) = -0.1;

45 V2(nau1+1) = 0.1;

46 V2(nau1+nny+1) = 0.1;

47 V2(nau2+1) = 0.2;

Page 28: Trabalho final pronto   30-11-10

48 V2(nau2+nny+1) = 0.2;

49 %

50 % Calculo do numero de Peclet

51 %

52 pec1 = (V1*dx)/alfa;

53 pec2 = (max(abs(V2))*dy)/alfa;

54 %

55 % Zerando as Matrizes e o vetor d

56 %

57 A = sparse(ntn,ntn);

58 B = sparse(ntn,ntn);

59 d = zeros(ntn,1);

60 %

61 % Estabelecendo a condicao inicial

62 %

63 u0 = zeros(ntn,1);

64 for k=1:1:nny

65 u0(k) = u0(k)+0.001;

66 end;

67 u0(ntn-nau3) = .3;

68 u0(ntn-nau3-nny) = .3;

69 u0(ntn-nau3-2*nny) = .3;

70 u0(nau4) = .3;

71 u0(nau4+nny) = .3;

72 u0(nau3) = .3;

73 u0(nau3+nny) = .3;

74 u0(nau3+2*nny) = .3;

75 u0(nau1+1) = .3;

76 u0(nau1+nny+1) = .3;

Page 29: Trabalho final pronto   30-11-10

77 u0(nau2+1) = .3;

78 u0(nau2+nny+1) = .3;

79 %

80 % Construcao das Matrizes do sistema

81 %

82 % Construção em Gama 0

83 %

84 for i = 2:ny

85 A(i,i+nny) = -alfa/dx;

86 B(i,i+nny) = alfa/dx;

87 A(i,i+2*nny)= alfa/(4*dx);

88 B(i,i+2*nny)= -alfa/(4*dx);

89 end;

90 %

91 % Construção para os nodos centrais

92 %

93 for j = 1:1:nx-1

94 for i = nny*j+2:nny*j+ny

95 A(i,i-nny) = -alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

96 B(i,i-nny) = +alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

97 A(i,i-1) = -alfa*dt/(2*dy*dy)-V2(i-1)/(4*dy);

98 B(i,i-1) = +alfa*dt/(2*dy*dy)+V2(i-1)/(4*dy);

99 A(i,i) = 1+alfa*dt/(dx*dx)+alfa*dt/(dy*dy)+sig*dt/2;

100 B(i,i) = 1-alfa*dt/(dx*dx)-alfa*dt/(dy*dy)+sig*dt/2;

101 A(i,i+1) = -alfa*dt/(2*dy*dy)+V2(i+1)*dt/(4*dy);

102 B(i,i+1) = alfa*dt/(2*dy*dy)-V2(i+1)*dt/(4*dy);

103 A(i,i+nny) = -alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

104 B(i,i+nny) = alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

105 end;

Page 30: Trabalho final pronto   30-11-10

106 end;

107 %

108 % Construção para a fronteira Gama 3

109 %

110 for i = 2*nny:nny:nx*nny

111 A(i,i) = 3*alfa/(4*dy)-K3/2;

112 B(i,i) = -3*alfa/(4*dy)-K3/2;

113 A(i,i-1) = -alfa/(dy);

114 B(i,i-1) = alfa/(dy);

115 A(i,i-2) = alfa/(4*dy);

116 B(i,i-2) = -alfa/(4*dy);

117 end;

118 %

119 % Construção para a fronteira Gama 1

120 %

121 for j = 1:nx-1

122 i = nny*j+1;

123 A(i,i) = 3*alfa/(4*dy)-K1/2;

124 B(i,i) = -3*alfa/(4*dy)-K1/2;

125 A(i,i+1) = -alfa/(dy);

126 B(i,i+1) = alfa/(dy);

127 A(i,i+2) = alfa/(4*dy);

128 B(i,i+2) = -alfa/(4*dy);

129 end;

130 %

131 % Construção para a fronteira Gama 2

132 %

133 for i = nx*nny+1:ntn

134 A(i,i) = 3*alfa/(4*dx)-K2/2;

Page 31: Trabalho final pronto   30-11-10

135 B(i,i) = -3*alfa/(4*dx)-K2/2;

136 A(i,i-nny) = -alfa/(dx);

137 B(i,i-nny) = alfa/(dx);

138 A(i,i-2*nny) = alfa/(4*dx);

139 B(i,i-2*nny) = -alfa/(4*dx);

140 end;

141 %

142 % Estabelecendo vetor d

143 %

144 %for i = 10*ny:11*ny

145 % d(i) = 0.0001;

146 %end;

147 d(ntn-nau3) = 0.0001;

148 d(ntn-nau3-nny) = 0.0001;

149 d(ntn-nau3-2*nny) = 0.0001;

150 d(nau4) = 0.0002;

151 d(nau4+nny) = 0.0002;

152 d(nau3) = 0.0005;

153 d(nau3+nny) = 0.0005;

154 d(nau3+2*nny) = 0.0005;

155 d(nau1+1) = 0.0003;

156 d(nau1+nny+1) = 0.0003;

157 d(nau2+1) = 0.0003;

158 d(nau2+nny+1) = 0.0003;

159 %

160 % Fatoracao L U da matriz de rigidez

161 %

162 [ll uu] = lu(A);

163 %

Page 32: Trabalho final pronto   30-11-10

164 % fazendo a matriz malha para o grid

165 %

166 k=0;

167 for i=1:nx;

168 for j=1:ny;

169 k=k+1;

170 ind = (i-1)*nny + j;

171 malha(k,1)=ind;

172 malha(k,2)=ind+nny;

173 malha(k,3)=ind+1;

174 k=k+1;

175 malha(k,1)=ind+nny+1;

176 malha(k,2)=ind+1;

177 malha(k,3)=ind+nny;

178 end;

179 end;

180 %

181 % montagem da malha de coordenadas dos nos

182 %

183 k=0;

184 for i=1:nnx

185 x = (i-1)*dx;

186 for j = 1:nny

187 y = (j-1)*dy;

188 k = k + 1;

189 coord(k,1) = x;

190 coord(k,2) = y;

191 end;

192 end;

Page 33: Trabalho final pronto   30-11-10

193 %

194 % estruturando o vetor solucao para o grafico

195 fig=figure;

196 mov = avifile('animacao6.avi')

197 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

198 F = getframe(gca);

199 mov = addframe(mov,F);

200 %

201 % resolução dos sucessivos sistemas.

202 %

203 nsp1 = 2*nny+ny/2; % Nó próximo a fronteira Gama 0

204 nsp2 = (nx/2)*(ny/2); % Nó ao centro do domínio.

205 nsp3 = (ntn-1)/2; % Nó próximo a fronteira Gama 3 - na parte central do

domínio

206 nsp4 = ntn-ny/2-1; % Nó sobre a fronteira Gama 2

207 %

208 % resolução dos sucessivos sistemas.

209 %

210 for it = 1:nt

211 nosep1(it) = u0(nsp1);

212 nosep2(it) = u0(nsp2);

213 nosep3(it) = u0(nsp3);

214 nosep4(it) = u0(nsp4);

215 t(it) = (it-1)*dt;

216 ys = ll\(B*u0+d);

217 s = uu\ys;

218 if mod(it,2)==1

219 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

220 F = getframe(gca);

Page 34: Trabalho final pronto   30-11-10

221 mov = addframe(mov,F);

222 end;

223 u0=s;

224 end;

225 t(it+1) = (it)*dt;

226 nosep1(it+1) = u0(nsp1);

227 nosep2(it+1) = u0(nsp2);

228 nosep3(it+1) = u0(nsp3);

229 nosep4(it+1) = u0(nsp4);

230 mov = close(mov);

231 subplot(2,2,1)

232 plot(t,nosep1),grid on,title('Nó prox. \Gamma_0'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');

233 subplot(2,2,2)

234 plot(t,nosep2),grid on,title('Nó ao centro de \Omega'), xlabel('tempo (horas)'),

ylabel('concentração(ppm)');;

235 subplot(2,2,3)

236 plot(t,nosep3),grid on,title('Nó ao centro de \Gamma_3'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

237 subplot(2,2,4)

238 plot(t,nosep4),grid on,title('Nó sobre \Gamma_2'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

239 etime(clock,t0);

2. Teste Estação Seca – Difusão Média

1 % Programa preliminar p/ diferencas finitas

2 % Dispersao de esgoto no rio Cuiaba/MT - PIBIC Luiz Fernando

3 % sexta vesao - 26/11/2010 - Teste estação seca - Difusão Média

4 %

5 % Parametros do modelo

6 %

Page 35: Trabalho final pronto   30-11-10

7 clear all; t0=clock; %format long;

8 alfa = 0.23; % coeficiente de difusão

9 sig = 0.1; % coeficiente de degradação

10 V1 = 1.7; % velocidade do rio

11 K1 = 0; % permeabilidade na fronteira Gama 1

12 K2 = 0; % permeabilidade na fronteira Gama 2

13 K3 = 0; % permeabilidade na fronteira Gama 3

14 %

15 % Parametros da discretizacao

16 %

17 xmin = 0; xmax = 6.0;

18 ymin = 0; ymax = 0.2;

19 ti = 0; tf = 40;

20 nx = 600;

21 ny = 20;

22 nt = 100;

23 %

24 % Calculo de parametros auxiliares

25 %

26 nnx= nx+1; nny= ny+1; ntn = nnx*nny; dt = (tf - ti)/nt;

27 dx = (xmax - xmin)/nx;

28 dy = (ymax - ymin)/ny;

29 nau1 = round(nx/3)*nny;

30 nau2 = round(2*nx/3)*nny;

31 nau3 = round(nx/20)*nny;

32 nau4 = round(nx/2)*nny;

33 %

34 % Construcao do campo V2 -> velocidades na direcao y

35 %

Page 36: Trabalho final pronto   30-11-10

36 V2 = zeros(ntn,1);

37 V2(ntn-nau3) = -1.3;

38 V2(ntn-nau3-nny) = -1.3;

39 V2(ntn-nau3-2*nny) = -1.3;

40 V2(nau4) = -.1;

41 V2(nau4+nny) = -.1;

42 V2(nau3) = -0.1;

43 V2(nau3+nny) = -0.1;

44 V2(nau3+2*nny) = -0.1;

45 V2(nau1+1) = 0.1;

46 V2(nau1+nny+1) = 0.1;

47 V2(nau2+1) = 0.2;

48 V2(nau2+nny+1) = 0.2;

49 %

50 % Calculo do numero de Peclet

51 %

52 pec1 = (V1*dx)/alfa;

53 pec2 = (max(abs(V2))*dy)/alfa;

54 %

55 % Zerando as Matrizes e o vetor d

56 %

57 A = sparse(ntn,ntn);

58 B = sparse(ntn,ntn);

59 d = zeros(ntn,1);

60 %

61 % Estabelecendo a condicao inicial

62 %

63 u0 = zeros(ntn,1);

64 for k=1:1:nny

Page 37: Trabalho final pronto   30-11-10

65 u0(k) = u0(k)+0.001;

66 end;

67 u0(ntn-nau3) = .3;

68 u0(ntn-nau3-nny) = .3;

69 u0(ntn-nau3-2*nny) = .3;

70 u0(nau4) = .3;

71 u0(nau4+nny) = .3;

72 u0(nau3) = .3;

73 u0(nau3+nny) = .3;

74 u0(nau3+2*nny) = .3;

75 u0(nau1+1) = .3;

76 u0(nau1+nny+1) = .3;

77 u0(nau2+1) = .3;

78 u0(nau2+nny+1) = .3;

79 %

80 % Construcao das Matrizes do sistema

81 %

82 % Construção em Gama 0

83 %

84 for i = 2:ny

85 A(i,i+nny) = -alfa/dx;

86 B(i,i+nny) = alfa/dx;

87 A(i,i+2*nny)= alfa/(4*dx);

88 B(i,i+2*nny)= -alfa/(4*dx);

89 end;

90 %

91 % Construção para os nodos centrais

92 %

93 for j = 1:1:nx-1

Page 38: Trabalho final pronto   30-11-10

94 for i = nny*j+2:nny*j+ny

95 A(i,i-nny) = -alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

96 B(i,i-nny) = +alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

97 A(i,i-1) = -alfa*dt/(2*dy*dy)-V2(i-1)/(4*dy);

98 B(i,i-1) = +alfa*dt/(2*dy*dy)+V2(i-1)/(4*dy);

99 A(i,i) = 1+alfa*dt/(dx*dx)+alfa*dt/(dy*dy)+sig*dt/2;

100 B(i,i) = 1-alfa*dt/(dx*dx)-alfa*dt/(dy*dy)+sig*dt/2;

101 A(i,i+1) = -alfa*dt/(2*dy*dy)+V2(i+1)*dt/(4*dy);

102 B(i,i+1) = alfa*dt/(2*dy*dy)-V2(i+1)*dt/(4*dy);

103 A(i,i+nny) = -alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

104 B(i,i+nny) = alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

105 end;

106 end;

107 %

108 % Construção para a fronteira Gama 3

109 %

110 for i = 2*nny:nny:nx*nny

111 A(i,i) = 3*alfa/(4*dy)-K3/2;

112 B(i,i) = -3*alfa/(4*dy)-K3/2;

113 A(i,i-1) = -alfa/(dy);

114 B(i,i-1) = alfa/(dy);

115 A(i,i-2) = alfa/(4*dy);

116 B(i,i-2) = -alfa/(4*dy);

117 end;

118 %

119 % Construção para a fronteira Gama 1

120 %

121 for j = 1:nx-1

122 i = nny*j+1;

Page 39: Trabalho final pronto   30-11-10

123 A(i,i) = 3*alfa/(4*dy)-K1/2;

124 B(i,i) = -3*alfa/(4*dy)-K1/2;

125 A(i,i+1) = -alfa/(dy);

126 B(i,i+1) = alfa/(dy);

127 A(i,i+2) = alfa/(4*dy);

128 B(i,i+2) = -alfa/(4*dy);

129 end;

130 %

131 % Construção para a fronteira Gama 2

132 %

133 for i = nx*nny+1:ntn

134 A(i,i) = 3*alfa/(4*dx)-K2/2;

135 B(i,i) = -3*alfa/(4*dx)-K2/2;

136 A(i,i-nny) = -alfa/(dx);

137 B(i,i-nny) = alfa/(dx);

138 A(i,i-2*nny) = alfa/(4*dx);

139 B(i,i-2*nny) = -alfa/(4*dx);

140 end;

141 %

142 % Estabelecendo vetor d

143 %

144 %for i = 10*ny:11*ny

145 % d(i) = 0.0001;

146 %end;

147 d(ntn-nau3) = 0.0001;

148 d(ntn-nau3-nny) = 0.0001;

149 d(ntn-nau3-2*nny) = 0.0001;

150 d(nau4) = 0.0002;

151 d(nau4+nny) = 0.0002;

Page 40: Trabalho final pronto   30-11-10

152 d(nau3) = 0.0005;

153 d(nau3+nny) = 0.0005;

154 d(nau3+2*nny) = 0.0005;

155 d(nau1+1) = 0.0003;

156 d(nau1+nny+1) = 0.0003;

157 d(nau2+1) = 0.0003;

158 d(nau2+nny+1) = 0.0003;

159 %

160 % Fatoracao L U da matriz de rigidez

161 %

162 [ll uu] = lu(A);

163 %

164 % fazendo a matriz malha para o grid

165 %

166 k=0;

167 for i=1:nx;

168 for j=1:ny;

169 k=k+1;

170 ind = (i-1)*nny + j;

171 malha(k,1)=ind;

172 malha(k,2)=ind+nny;

173 malha(k,3)=ind+1;

174 k=k+1;

175 malha(k,1)=ind+nny+1;

176 malha(k,2)=ind+1;

177 malha(k,3)=ind+nny;

178 end;

179 end;

180 %

Page 41: Trabalho final pronto   30-11-10

181 % montagem da malha de coordenadas dos nos

182 %

183 k=0;

184 for i=1:nnx

185 x = (i-1)*dx;

186 for j = 1:nny

187 y = (j-1)*dy;

188 k = k + 1;

189 coord(k,1) = x;

190 coord(k,2) = y;

191 end;

192 end;

193 %

194 % estruturando o vetor solucao para o grafico

195 fig=figure;

196 mov = avifile('animacao6.avi')

197 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

198 F = getframe(gca);

199 mov = addframe(mov,F);

200 %

201 % resolução dos sucessivos sistemas.

202 %

203 nsp1 = 2*nny+ny/2; % Nó próximo a fronteira Gama 0

204 nsp2 = (nx/2)*(ny/2); % Nó ao centro do domínio.

205 nsp3 = (ntn-1)/2; % Nó próximo a fronteira Gama 3 - na parte central do

domínio

206 nsp4 = ntn-ny/2-1; % Nó sobre a fronteira Gama 2

207 %

208 % resolução dos sucessivos sistemas.

Page 42: Trabalho final pronto   30-11-10

209 %

210 for it = 1:nt

211 nosep1(it) = u0(nsp1);

212 nosep2(it) = u0(nsp2);

213 nosep3(it) = u0(nsp3);

214 nosep4(it) = u0(nsp4);

215 t(it) = (it-1)*dt;

216 ys = ll\(B*u0+d);

217 s = uu\ys;

218 if mod(it,2)==1

219 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

220 F = getframe(gca);

221 mov = addframe(mov,F);

222 end;

223 u0=s;

224 end;

225 t(it+1) = (it)*dt;

226 nosep1(it+1) = u0(nsp1);

227 nosep2(it+1) = u0(nsp2);

228 nosep3(it+1) = u0(nsp3);

229 nosep4(it+1) = u0(nsp4);

230 mov = close(mov);

231 subplot(2,2,1)

232 plot(t,nosep1),grid on,title('Nó prox. \Gamma_0'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');

233 subplot(2,2,2)

234 plot(t,nosep2),grid on,title('Nó ao centro de \Omega'), xlabel('tempo (horas)'),

ylabel('concentração(ppm)');;

235 subplot(2,2,3)

Page 43: Trabalho final pronto   30-11-10

236 plot(t,nosep3),grid on,title('Nó ao centro de \Gamma_3'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

237 subplot(2,2,4)

238 plot(t,nosep4),grid on,title('Nó sobre \Gamma_2'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

239 etime(clock,t0);

3. Teste Estação seca – Difusão Alta

1 % Programa preliminar p/ diferencas finitas

2 % Dispersao de esgoto no rio Cuiaba/MT - PIBIC Luiz Fernando

3 % sexta vesao - 26/11/2010 - Teste estação seca - Difusão Alta

4 %

5 % Parametros do modelo

6 %

7 clear all; t0=clock; %format long;

8 alfa = 0.32; % coeficiente de difusão

9 sig = 0.1; % coeficiente de degradação

10 V1 = 1.7; % velocidade do rio

11 K1 = 0; % permeabilidade na fronteira Gama 1

12 K2 = 0; % permeabilidade na fronteira Gama 2

13 K3 = 0; % permeabilidade na fronteira Gama 3

14 %

15 % Parametros da discretizacao

16 %

17 xmin = 0; xmax = 6.0;

18 ymin = 0; ymax = 0.2;

19 ti = 0; tf = 40;

20 nx = 600;

21 ny = 20;

22 nt = 100;

Page 44: Trabalho final pronto   30-11-10

23 %

24 % Calculo de parametros auxiliares

25 %

26 nnx= nx+1; nny= ny+1; ntn = nnx*nny; dt = (tf - ti)/nt;

27 dx = (xmax - xmin)/nx;

28 dy = (ymax - ymin)/ny;

29 nau1 = round(nx/3)*nny;

30 nau2 = round(2*nx/3)*nny;

31 nau3 = round(nx/20)*nny;

32 nau4 = round(nx/2)*nny;

33 %

34 % Construcao do campo V2 -> velocidades na direcao y

35 %

36 V2 = zeros(ntn,1);

37 V2(ntn-nau3) = -1.3;

38 V2(ntn-nau3-nny) = -1.3;

39 V2(ntn-nau3-2*nny) = -1.3;

40 V2(nau4) = -.1;

41 V2(nau4+nny) = -.1;

42 V2(nau3) = -0.1;

43 V2(nau3+nny) = -0.1;

44 V2(nau3+2*nny) = -0.1;

45 V2(nau1+1) = 0.1;

46 V2(nau1+nny+1) = 0.1;

47 V2(nau2+1) = 0.2;

48 V2(nau2+nny+1) = 0.2;

49 %

50 % Calculo do numero de Peclet

51 %

Page 45: Trabalho final pronto   30-11-10

52 pec1 = (V1*dx)/alfa;

53 pec2 = (max(abs(V2))*dy)/alfa;

54 %

55 % Zerando as Matrizes e o vetor d

56 %

57 A = sparse(ntn,ntn);

58 B = sparse(ntn,ntn);

59 d = zeros(ntn,1);

60 %

61 % Estabelecendo a condicao inicial

62 %

63 u0 = zeros(ntn,1);

64 for k=1:1:nny

65 u0(k) = u0(k)+0.001;

66 end;

67 u0(ntn-nau3) = .3;

68 u0(ntn-nau3-nny) = .3;

69 u0(ntn-nau3-2*nny) = .3;

70 u0(nau4) = .3;

71 u0(nau4+nny) = .3;

72 u0(nau3) = .3;

73 u0(nau3+nny) = .3;

74 u0(nau3+2*nny) = .3;

75 u0(nau1+1) = .3;

76 u0(nau1+nny+1) = .3;

77 u0(nau2+1) = .3;

78 u0(nau2+nny+1) = .3;

79 %

80 % Construcao das Matrizes do sistema

Page 46: Trabalho final pronto   30-11-10

81 %

82 % Construção em Gama 0

83 %

84 for i = 2:ny

85 A(i,i+nny) = -alfa/dx;

86 B(i,i+nny) = alfa/dx;

87 A(i,i+2*nny)= alfa/(4*dx);

88 B(i,i+2*nny)= -alfa/(4*dx);

89 end;

90 %

91 % Construção para os nodos centrais

92 %

93 for j = 1:1:nx-1

94 for i = nny*j+2:nny*j+ny

95 A(i,i-nny) = -alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

96 B(i,i-nny) = +alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

97 A(i,i-1) = -alfa*dt/(2*dy*dy)-V2(i-1)/(4*dy);

98 B(i,i-1) = +alfa*dt/(2*dy*dy)+V2(i-1)/(4*dy);

99 A(i,i) = 1+alfa*dt/(dx*dx)+alfa*dt/(dy*dy)+sig*dt/2;

100 B(i,i) = 1-alfa*dt/(dx*dx)-alfa*dt/(dy*dy)+sig*dt/2;

101 A(i,i+1) = -alfa*dt/(2*dy*dy)+V2(i+1)*dt/(4*dy);

102 B(i,i+1) = alfa*dt/(2*dy*dy)-V2(i+1)*dt/(4*dy);

103 A(i,i+nny) = -alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

104 B(i,i+nny) = alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

105 end;

106 end;

107 %

108 % Construção para a fronteira Gama 3

109 %

Page 47: Trabalho final pronto   30-11-10

110 for i = 2*nny:nny:nx*nny

111 A(i,i) = 3*alfa/(4*dy)-K3/2;

112 B(i,i) = -3*alfa/(4*dy)-K3/2;

113 A(i,i-1) = -alfa/(dy);

114 B(i,i-1) = alfa/(dy);

115 A(i,i-2) = alfa/(4*dy);

116 B(i,i-2) = -alfa/(4*dy);

117 end;

118 %

119 % Construção para a fronteira Gama 1

120 %

121 for j = 1:nx-1

122 i = nny*j+1;

123 A(i,i) = 3*alfa/(4*dy)-K1/2;

124 B(i,i) = -3*alfa/(4*dy)-K1/2;

125 A(i,i+1) = -alfa/(dy);

126 B(i,i+1) = alfa/(dy);

127 A(i,i+2) = alfa/(4*dy);

128 B(i,i+2) = -alfa/(4*dy);

129 end;

130 %

131 % Construção para a fronteira Gama 2

132 %

133 for i = nx*nny+1:ntn

134 A(i,i) = 3*alfa/(4*dx)-K2/2;

135 B(i,i) = -3*alfa/(4*dx)-K2/2;

136 A(i,i-nny) = -alfa/(dx);

137 B(i,i-nny) = alfa/(dx);

138 A(i,i-2*nny) = alfa/(4*dx);

Page 48: Trabalho final pronto   30-11-10

139 B(i,i-2*nny) = -alfa/(4*dx);

140 end;

141 %

142 % Estabelecendo vetor d

143 %

144 %for i = 10*ny:11*ny

145 % d(i) = 0.0001;

146 %end;

147 d(ntn-nau3) = 0.0001;

148 d(ntn-nau3-nny) = 0.0001;

149 d(ntn-nau3-2*nny) = 0.0001;

150 d(nau4) = 0.0002;

151 d(nau4+nny) = 0.0002;

152 d(nau3) = 0.0005;

153 d(nau3+nny) = 0.0005;

154 d(nau3+2*nny) = 0.0005;

155 d(nau1+1) = 0.0003;

156 d(nau1+nny+1) = 0.0003;

157 d(nau2+1) = 0.0003;

158 d(nau2+nny+1) = 0.0003;

159 %

160 % Fatoracao L U da matriz de rigidez

161 %

162 [ll uu] = lu(A);

163 %

164 % fazendo a matriz malha para o grid

165 %

166 k=0;

167 for i=1:nx;

Page 49: Trabalho final pronto   30-11-10

168 for j=1:ny;

169 k=k+1;

170 ind = (i-1)*nny + j;

171 malha(k,1)=ind;

172 malha(k,2)=ind+nny;

173 malha(k,3)=ind+1;

174 k=k+1;

175 malha(k,1)=ind+nny+1;

176 malha(k,2)=ind+1;

177 malha(k,3)=ind+nny;

178 end;

179 end;

180 %

181 % montagem da malha de coordenadas dos nos

182 %

183 k=0;

184 for i=1:nnx

185 x = (i-1)*dx;

186 for j = 1:nny

187 y = (j-1)*dy;

188 k = k + 1;

189 coord(k,1) = x;

190 coord(k,2) = y;

191 end;

192 end;

193 %

194 % estruturando o vetor solucao para o grafico

195 fig=figure;

196 mov = avifile('animacao6.avi')

Page 50: Trabalho final pronto   30-11-10

197 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

198 F = getframe(gca);

199 mov = addframe(mov,F);

200 %

201 % resolução dos sucessivos sistemas.

202 %

203 nsp1 = 2*nny+ny/2; % Nó próximo a fronteira Gama 0

204 nsp2 = (nx/2)*(ny/2); % Nó ao centro do domínio.

205 nsp3 = (ntn-1)/2; % Nó próximo a fronteira Gama 3 - na parte central do

domínio

206 nsp4 = ntn-ny/2-1; % Nó sobre a fronteira Gama 2

207 %

208 % resolução dos sucessivos sistemas.

209 %

210 for it = 1:nt

211 nosep1(it) = u0(nsp1);

212 nosep2(it) = u0(nsp2);

213 nosep3(it) = u0(nsp3);

214 nosep4(it) = u0(nsp4);

215 t(it) = (it-1)*dt;

216 ys = ll\(B*u0+d);

217 s = uu\ys;

218 if mod(it,2)==1

219 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

220 F = getframe(gca);

221 mov = addframe(mov,F);

222 end;

223 u0=s;

224 end;

Page 51: Trabalho final pronto   30-11-10

225 t(it+1) = (it)*dt;

226 nosep1(it+1) = u0(nsp1);

227 nosep2(it+1) = u0(nsp2);

228 nosep3(it+1) = u0(nsp3);

229 nosep4(it+1) = u0(nsp4);

230 mov = close(mov);

231 subplot(2,2,1)

232 plot(t,nosep1),grid on,title('Nó prox. \Gamma_0'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');

233 subplot(2,2,2)

234 plot(t,nosep2),grid on,title('Nó ao centro de \Omega'), xlabel('tempo (horas)'),

ylabel('concentração(ppm)');;

235 subplot(2,2,3)

236 plot(t,nosep3),grid on,title('Nó ao centro de \Gamma_3'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

237 subplot(2,2,4)

238 plot(t,nosep4),grid on,title('Nó sobre \Gamma_2'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

239 etime(clock,t0);

4. Teste Estação úmida – Difusão Baixa

1 % Programa preliminar p/ diferencas finitas

2 % Dispersao de esgoto no rio Cuiaba/MT - PIBIC Luiz Fernando

3 % sexta vesao - 26/11/2010 - Teste estação úmida - Difusão Baixa

4 %

5 % Parametros do modelo

6 %

7 clear all; t0=clock; %format long;

8 alfa = 0.09; % coeficiente de difusão

9 sig = 0.1; % coeficiente de degradação

10 V1 = 3.0; % velocidade do rio

Page 52: Trabalho final pronto   30-11-10

11 K1 = 0; % permeabilidade na fronteira Gama 1

12 K2 = 0; % permeabilidade na fronteira Gama 2

13 K3 = 0; % permeabilidade na fronteira Gama 3

14 %

15 % Parametros da discretizacao

16 %

17 xmin = 0; xmax = 6.0;

18 ymin = 0; ymax = 0.2;

19 ti = 0; tf = 40;

20 nx = 600;

21 ny = 20;

22 nt = 100;

23 %

24 % Calculo de parametros auxiliares

25 %

26 nnx= nx+1; nny= ny+1; ntn = nnx*nny; dt = (tf - ti)/nt;

27 dx = (xmax - xmin)/nx;

28 dy = (ymax - ymin)/ny;

29 nau1 = round(nx/3)*nny;

30 nau2 = round(2*nx/3)*nny;

31 nau3 = round(nx/20)*nny;

32 nau4 = round(nx/2)*nny;

33 %

34 % Construcao do campo V2 -> velocidades na direcao y

35 %

36 V2 = zeros(ntn,1);

37 V2(ntn-nau3) = -1.3;

38 V2(ntn-nau3-nny) = -1.3;

39 V2(ntn-nau3-2*nny) = -1.3;

Page 53: Trabalho final pronto   30-11-10

40 V2(nau4) = -.1;

41 V2(nau4+nny) = -.1;

42 V2(nau3) = -0.1;

43 V2(nau3+nny) = -0.1;

44 V2(nau3+2*nny) = -0.1;

45 V2(nau1+1) = 0.1;

46 V2(nau1+nny+1) = 0.1;

47 V2(nau2+1) = 0.2;

48 V2(nau2+nny+1) = 0.2;

49 %

50 % Calculo do numero de Peclet

51 %

52 pec1 = (V1*dx)/alfa;

53 pec2 = (max(abs(V2))*dy)/alfa;

54 %

55 % Zerando as Matrizes e o vetor d

56 %

57 A = sparse(ntn,ntn);

58 B = sparse(ntn,ntn);

59 d = zeros(ntn,1);

60 %

61 % Estabelecendo a condicao inicial

62 %

63 u0 = zeros(ntn,1);

64 for k=1:1:nny

65 u0(k) = u0(k)+0.001;

66 end;

67 u0(ntn-nau3) = .3;

68 u0(ntn-nau3-nny) = .3;

Page 54: Trabalho final pronto   30-11-10

69 u0(ntn-nau3-2*nny) = .3;

70 u0(nau4) = .3;

71 u0(nau4+nny) = .3;

72 u0(nau3) = .3;

73 u0(nau3+nny) = .3;

74 u0(nau3+2*nny) = .3;

75 u0(nau1+1) = .3;

76 u0(nau1+nny+1) = .3;

77 u0(nau2+1) = .3;

78 u0(nau2+nny+1) = .3;

79 %

80 % Construcao das Matrizes do sistema

81 %

82 % Construção em Gama 0

83 %

84 for i = 2:ny

85 A(i,i+nny) = -alfa/dx;

86 B(i,i+nny) = alfa/dx;

87 A(i,i+2*nny)= alfa/(4*dx);

88 B(i,i+2*nny)= -alfa/(4*dx);

89 end;

90 %

91 % Construção para os nodos centrais

92 %

93 for j = 1:1:nx-1

94 for i = nny*j+2:nny*j+ny

95 A(i,i-nny) = -alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

96 B(i,i-nny) = +alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

97 A(i,i-1) = -alfa*dt/(2*dy*dy)-V2(i-1)/(4*dy);

Page 55: Trabalho final pronto   30-11-10

98 B(i,i-1) = +alfa*dt/(2*dy*dy)+V2(i-1)/(4*dy);

99 A(i,i) = 1+alfa*dt/(dx*dx)+alfa*dt/(dy*dy)+sig*dt/2;

100 B(i,i) = 1-alfa*dt/(dx*dx)-alfa*dt/(dy*dy)+sig*dt/2;

101 A(i,i+1) = -alfa*dt/(2*dy*dy)+V2(i+1)*dt/(4*dy);

102 B(i,i+1) = alfa*dt/(2*dy*dy)-V2(i+1)*dt/(4*dy);

103 A(i,i+nny) = -alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

104 B(i,i+nny) = alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

105 end;

106 end;

107 %

108 % Construção para a fronteira Gama 3

109 %

110 for i = 2*nny:nny:nx*nny

111 A(i,i) = 3*alfa/(4*dy)-K3/2;

112 B(i,i) = -3*alfa/(4*dy)-K3/2;

113 A(i,i-1) = -alfa/(dy);

114 B(i,i-1) = alfa/(dy);

115 A(i,i-2) = alfa/(4*dy);

116 B(i,i-2) = -alfa/(4*dy);

117 end;

118 %

119 % Construção para a fronteira Gama 1

120 %

121 for j = 1:nx-1

122 i = nny*j+1;

123 A(i,i) = 3*alfa/(4*dy)-K1/2;

124 B(i,i) = -3*alfa/(4*dy)-K1/2;

125 A(i,i+1) = -alfa/(dy);

126 B(i,i+1) = alfa/(dy);

Page 56: Trabalho final pronto   30-11-10

127 A(i,i+2) = alfa/(4*dy);

128 B(i,i+2) = -alfa/(4*dy);

129 end;

130 %

131 % Construção para a fronteira Gama 2

132 %

133 for i = nx*nny+1:ntn

134 A(i,i) = 3*alfa/(4*dx)-K2/2;

135 B(i,i) = -3*alfa/(4*dx)-K2/2;

136 A(i,i-nny) = -alfa/(dx);

137 B(i,i-nny) = alfa/(dx);

138 A(i,i-2*nny) = alfa/(4*dx);

139 B(i,i-2*nny) = -alfa/(4*dx);

140 end;

141 %

142 % Estabelecendo vetor d

143 %

144 %for i = 10*ny:11*ny

145 % d(i) = 0.0001;

146 %end;

147 d(ntn-nau3) = 0.0001;

148 d(ntn-nau3-nny) = 0.0001;

149 d(ntn-nau3-2*nny) = 0.0001;

150 d(nau4) = 0.0002;

151 d(nau4+nny) = 0.0002;

152 d(nau3) = 0.0005;

153 d(nau3+nny) = 0.0005;

154 d(nau3+2*nny) = 0.0005;

155 d(nau1+1) = 0.0003;

Page 57: Trabalho final pronto   30-11-10

156 d(nau1+nny+1) = 0.0003;

157 d(nau2+1) = 0.0003;

158 d(nau2+nny+1) = 0.0003;

159 %

160 % Fatoracao L U da matriz de rigidez

161 %

162 [ll uu] = lu(A);

163 %

164 % fazendo a matriz malha para o grid

165 %

166 k=0;

167 for i=1:nx;

168 for j=1:ny;

169 k=k+1;

170 ind = (i-1)*nny + j;

171 malha(k,1)=ind;

172 malha(k,2)=ind+nny;

173 malha(k,3)=ind+1;

174 k=k+1;

175 malha(k,1)=ind+nny+1;

176 malha(k,2)=ind+1;

177 malha(k,3)=ind+nny;

178 end;

179 end;

180 %

181 % montagem da malha de coordenadas dos nos

182 %

183 k=0;

184 for i=1:nnx

Page 58: Trabalho final pronto   30-11-10

185 x = (i-1)*dx;

186 for j = 1:nny

187 y = (j-1)*dy;

188 k = k + 1;

189 coord(k,1) = x;

190 coord(k,2) = y;

191 end;

192 end;

193 %

194 % estruturando o vetor solucao para o grafico

195 fig=figure;

196 mov = avifile('animacao6.avi')

197 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

198 F = getframe(gca);

199 mov = addframe(mov,F);

200 %

201 % resolução dos sucessivos sistemas.

202 %

203 nsp1 = 2*nny+ny/2; % Nó próximo a fronteira Gama 0

204 nsp2 = (nx/2)*(ny/2); % Nó ao centro do domínio.

205 nsp3 = (ntn-1)/2; % Nó próximo a fronteira Gama 3 - na parte central do

domínio

206 nsp4 = ntn-ny/2-1; % Nó sobre a fronteira Gama 2

207 %

208 % resolução dos sucessivos sistemas.

209 %

210 for it = 1:nt

211 nosep1(it) = u0(nsp1);

212 nosep2(it) = u0(nsp2);

Page 59: Trabalho final pronto   30-11-10

213 nosep3(it) = u0(nsp3);

214 nosep4(it) = u0(nsp4);

215 t(it) = (it-1)*dt;

216 ys = ll\(B*u0+d);

217 s = uu\ys;

218 if mod(it,2)==1

219 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

220 F = getframe(gca);

221 mov = addframe(mov,F);

222 end;

223 u0=s;

224 end;

225 t(it+1) = (it)*dt;

226 nosep1(it+1) = u0(nsp1);

227 nosep2(it+1) = u0(nsp2);

228 nosep3(it+1) = u0(nsp3);

229 nosep4(it+1) = u0(nsp4);

230 mov = close(mov);

231 subplot(2,2,1)

232 plot(t,nosep1),grid on,title('Nó prox. \Gamma_0'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');

233 subplot(2,2,2)

234 plot(t,nosep2),grid on,title('Nó ao centro de \Omega'), xlabel('tempo (horas)'),

ylabel('concentração(ppm)');;

235 subplot(2,2,3)

236 plot(t,nosep3),grid on,title('Nó ao centro de \Gamma_3'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

237 subplot(2,2,4)

238 plot(t,nosep4),grid on,title('Nó sobre \Gamma_2'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

Page 60: Trabalho final pronto   30-11-10

239 etime(clock,t0);

5. Teste Estação úmida – Difusão Média

1 % Programa preliminar p/ diferencas finitas

2 % Dispersao de esgoto no rio Cuiaba/MT - PIBIC Luiz Fernando

3 % sexta vesao - 26/11/2010 - Teste estação úmida - Difusão Baixa

4 %

5 % Parametros do modelo

6 %

7 clear all; t0=clock; %format long;

8 alfa = 0.23; % coeficiente de difusão

9 sig = 0.1; % coeficiente de degradação

10 V1 = 3.0; % velocidade do rio

11 K1 = 0; % permeabilidade na fronteira Gama 1

12 K2 = 0; % permeabilidade na fronteira Gama 2

13 K3 = 0; % permeabilidade na fronteira Gama 3

14 %

15 % Parametros da discretizacao

16 %

17 xmin = 0; xmax = 6.0;

18 ymin = 0; ymax = 0.2;

19 ti = 0; tf = 40;

20 nx = 600;

21 ny = 20;

22 nt = 100;

23 %

24 % Calculo de parametros auxiliares

25 %

26 nnx= nx+1; nny= ny+1; ntn = nnx*nny; dt = (tf - ti)/nt;

Page 61: Trabalho final pronto   30-11-10

27 dx = (xmax - xmin)/nx;

28 dy = (ymax - ymin)/ny;

29 nau1 = round(nx/3)*nny;

30 nau2 = round(2*nx/3)*nny;

31 nau3 = round(nx/20)*nny;

32 nau4 = round(nx/2)*nny;

33 %

34 % Construcao do campo V2 -> velocidades na direcao y

35 %

36 V2 = zeros(ntn,1);

37 V2(ntn-nau3) = -1.3;

38 V2(ntn-nau3-nny) = -1.3;

39 V2(ntn-nau3-2*nny) = -1.3;

40 V2(nau4) = -.1;

41 V2(nau4+nny) = -.1;

42 V2(nau3) = -0.1;

43 V2(nau3+nny) = -0.1;

44 V2(nau3+2*nny) = -0.1;

45 V2(nau1+1) = 0.1;

46 V2(nau1+nny+1) = 0.1;

47 V2(nau2+1) = 0.2;

48 V2(nau2+nny+1) = 0.2;

49 %

50 % Calculo do numero de Peclet

51 %

52 pec1 = (V1*dx)/alfa;

53 pec2 = (max(abs(V2))*dy)/alfa;

54 %

55 % Zerando as Matrizes e o vetor d

Page 62: Trabalho final pronto   30-11-10

56 %

57 A = sparse(ntn,ntn);

58 B = sparse(ntn,ntn);

59 d = zeros(ntn,1);

60 %

61 % Estabelecendo a condicao inicial

62 %

63 u0 = zeros(ntn,1);

64 for k=1:1:nny

65 u0(k) = u0(k)+0.001;

66 end;

67 u0(ntn-nau3) = .3;

68 u0(ntn-nau3-nny) = .3;

69 u0(ntn-nau3-2*nny) = .3;

70 u0(nau4) = .3;

71 u0(nau4+nny) = .3;

72 u0(nau3) = .3;

73 u0(nau3+nny) = .3;

74 u0(nau3+2*nny) = .3;

75 u0(nau1+1) = .3;

76 u0(nau1+nny+1) = .3;

77 u0(nau2+1) = .3;

78 u0(nau2+nny+1) = .3;

79 %

80 % Construcao das Matrizes do sistema

81 %

82 % Construção em Gama 0

83 %

84 for i = 2:ny

Page 63: Trabalho final pronto   30-11-10

85 A(i,i+nny) = -alfa/dx;

86 B(i,i+nny) = alfa/dx;

87 A(i,i+2*nny)= alfa/(4*dx);

88 B(i,i+2*nny)= -alfa/(4*dx);

89 end;

90 %

91 % Construção para os nodos centrais

92 %

93 for j = 1:1:nx-1

94 for i = nny*j+2:nny*j+ny

95 A(i,i-nny) = -alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

96 B(i,i-nny) = +alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

97 A(i,i-1) = -alfa*dt/(2*dy*dy)-V2(i-1)/(4*dy);

98 B(i,i-1) = +alfa*dt/(2*dy*dy)+V2(i-1)/(4*dy);

99 A(i,i) = 1+alfa*dt/(dx*dx)+alfa*dt/(dy*dy)+sig*dt/2;

100 B(i,i) = 1-alfa*dt/(dx*dx)-alfa*dt/(dy*dy)+sig*dt/2;

101 A(i,i+1) = -alfa*dt/(2*dy*dy)+V2(i+1)*dt/(4*dy);

102 B(i,i+1) = alfa*dt/(2*dy*dy)-V2(i+1)*dt/(4*dy);

103 A(i,i+nny) = -alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

104 B(i,i+nny) = alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

105 end;

106 end;

107 %

108 % Construção para a fronteira Gama 3

109 %

110 for i = 2*nny:nny:nx*nny

111 A(i,i) = 3*alfa/(4*dy)-K3/2;

112 B(i,i) = -3*alfa/(4*dy)-K3/2;

113 A(i,i-1) = -alfa/(dy);

Page 64: Trabalho final pronto   30-11-10

114 B(i,i-1) = alfa/(dy);

115 A(i,i-2) = alfa/(4*dy);

116 B(i,i-2) = -alfa/(4*dy);

117 end;

118 %

119 % Construção para a fronteira Gama 1

120 %

121 for j = 1:nx-1

122 i = nny*j+1;

123 A(i,i) = 3*alfa/(4*dy)-K1/2;

124 B(i,i) = -3*alfa/(4*dy)-K1/2;

125 A(i,i+1) = -alfa/(dy);

126 B(i,i+1) = alfa/(dy);

127 A(i,i+2) = alfa/(4*dy);

128 B(i,i+2) = -alfa/(4*dy);

129 end;

130 %

131 % Construção para a fronteira Gama 2

132 %

133 for i = nx*nny+1:ntn

134 A(i,i) = 3*alfa/(4*dx)-K2/2;

135 B(i,i) = -3*alfa/(4*dx)-K2/2;

136 A(i,i-nny) = -alfa/(dx);

137 B(i,i-nny) = alfa/(dx);

138 A(i,i-2*nny) = alfa/(4*dx);

139 B(i,i-2*nny) = -alfa/(4*dx);

140 end;

141 %

142 % Estabelecendo vetor d

Page 65: Trabalho final pronto   30-11-10

143 %

144 %for i = 10*ny:11*ny

145 % d(i) = 0.0001;

146 %end;

147 d(ntn-nau3) = 0.0001;

148 d(ntn-nau3-nny) = 0.0001;

149 d(ntn-nau3-2*nny) = 0.0001;

150 d(nau4) = 0.0002;

151 d(nau4+nny) = 0.0002;

152 d(nau3) = 0.0005;

153 d(nau3+nny) = 0.0005;

154 d(nau3+2*nny) = 0.0005;

155 d(nau1+1) = 0.0003;

156 d(nau1+nny+1) = 0.0003;

157 d(nau2+1) = 0.0003;

158 d(nau2+nny+1) = 0.0003;

159 %

160 % Fatoracao L U da matriz de rigidez

161 %

162 [ll uu] = lu(A);

163 %

164 % fazendo a matriz malha para o grid

165 %

166 k=0;

167 for i=1:nx;

168 for j=1:ny;

169 k=k+1;

170 ind = (i-1)*nny + j;

171 malha(k,1)=ind;

Page 66: Trabalho final pronto   30-11-10

172 malha(k,2)=ind+nny;

173 malha(k,3)=ind+1;

174 k=k+1;

175 malha(k,1)=ind+nny+1;

176 malha(k,2)=ind+1;

177 malha(k,3)=ind+nny;

178 end;

179 end;

180 %

181 % montagem da malha de coordenadas dos nos

182 %

183 k=0;

184 for i=1:nnx

185 x = (i-1)*dx;

186 for j = 1:nny

187 y = (j-1)*dy;

188 k = k + 1;

189 coord(k,1) = x;

190 coord(k,2) = y;

191 end;

192 end;

193 %

194 % estruturando o vetor solucao para o grafico

195 fig=figure;

196 mov = avifile('animacao6.avi')

197 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

198 F = getframe(gca);

199 mov = addframe(mov,F);

200 %

Page 67: Trabalho final pronto   30-11-10

201 % resolução dos sucessivos sistemas.

202 %

203 nsp1 = 2*nny+ny/2; % Nó próximo a fronteira Gama 0

204 nsp2 = (nx/2)*(ny/2); % Nó ao centro do domínio.

205 nsp3 = (ntn-1)/2; % Nó próximo a fronteira Gama 3 - na parte central do

domínio

206 nsp4 = ntn-ny/2-1; % Nó sobre a fronteira Gama 2

207 %

208 % resolução dos sucessivos sistemas.

209 %

210 for it = 1:nt

211 nosep1(it) = u0(nsp1);

212 nosep2(it) = u0(nsp2);

213 nosep3(it) = u0(nsp3);

214 nosep4(it) = u0(nsp4);

215 t(it) = (it-1)*dt;

216 ys = ll\(B*u0+d);

217 s = uu\ys;

218 if mod(it,2)==1

219 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

220 F = getframe(gca);

221 mov = addframe(mov,F);

222 end;

223 u0=s;

224 end;

225 t(it+1) = (it)*dt;

226 nosep1(it+1) = u0(nsp1);

227 nosep2(it+1) = u0(nsp2);

228 nosep3(it+1) = u0(nsp3);

Page 68: Trabalho final pronto   30-11-10

229 nosep4(it+1) = u0(nsp4);

230 mov = close(mov);

231 subplot(2,2,1)

232 plot(t,nosep1),grid on,title('Nó prox. \Gamma_0'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');

233 subplot(2,2,2)

234 plot(t,nosep2),grid on,title('Nó ao centro de \Omega'), xlabel('tempo (horas)'),

ylabel('concentração(ppm)');;

235 subplot(2,2,3)

236 plot(t,nosep3),grid on,title('Nó ao centro de \Gamma_3'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

237 subplot(2,2,4)

238 plot(t,nosep4),grid on,title('Nó sobre \Gamma_2'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

239 etime(clock,t0);

6. Teste Estação Úmida – Difusão Alta

1 % Programa preliminar p/ diferencas finitas

2 % Dispersao de esgoto no rio Cuiaba/MT - PIBIC Luiz Fernando

3 % sexta vesao - 26/11/2010 - Teste estação úmida - Difusão Alta

4 %

5 % Parametros do modelo

6 %

7 clear all; t0=clock; %format long;

8 alfa = 0.32; % coeficiente de difusão

9 sig = 0.1; % coeficiente de degradação

10 V1 = 3.0; % velocidade do rio

11 K1 = 0; % permeabilidade na fronteira Gama 1

12 K2 = 0; % permeabilidade na fronteira Gama 2

13 K3 = 0; % permeabilidade na fronteira Gama 3

14 %

Page 69: Trabalho final pronto   30-11-10

15 % Parametros da discretizacao

16 %

17 xmin = 0; xmax = 6.0;

18 ymin = 0; ymax = 0.2;

19 ti = 0; tf = 40;

20 nx = 600;

21 ny = 20;

22 nt = 100;

23 %

24 % Calculo de parametros auxiliares

25 %

26 nnx= nx+1; nny= ny+1; ntn = nnx*nny; dt = (tf - ti)/nt;

27 dx = (xmax - xmin)/nx;

28 dy = (ymax - ymin)/ny;

29 nau1 = round(nx/3)*nny;

30 nau2 = round(2*nx/3)*nny;

31 nau3 = round(nx/20)*nny;

32 nau4 = round(nx/2)*nny;

33 %

34 % Construcao do campo V2 -> velocidades na direcao y

35 %

36 V2 = zeros(ntn,1);

37 V2(ntn-nau3) = -1.3;

38 V2(ntn-nau3-nny) = -1.3;

39 V2(ntn-nau3-2*nny) = -1.3;

40 V2(nau4) = -.1;

41 V2(nau4+nny) = -.1;

42 V2(nau3) = -0.1;

43 V2(nau3+nny) = -0.1;

Page 70: Trabalho final pronto   30-11-10

44 V2(nau3+2*nny) = -0.1;

45 V2(nau1+1) = 0.1;

46 V2(nau1+nny+1) = 0.1;

47 V2(nau2+1) = 0.2;

48 V2(nau2+nny+1) = 0.2;

49 %

50 % Calculo do numero de Peclet

51 %

52 pec1 = (V1*dx)/alfa;

53 pec2 = (max(abs(V2))*dy)/alfa;

54 %

55 % Zerando as Matrizes e o vetor d

56 %

57 A = sparse(ntn,ntn);

58 B = sparse(ntn,ntn);

59 d = zeros(ntn,1);

60 %

61 % Estabelecendo a condicao inicial

62 %

63 u0 = zeros(ntn,1);

64 for k=1:1:nny

65 u0(k) = u0(k)+0.001;

66 end;

67 u0(ntn-nau3) = .3;

68 u0(ntn-nau3-nny) = .3;

69 u0(ntn-nau3-2*nny) = .3;

70 u0(nau4) = .3;

71 u0(nau4+nny) = .3;

72 u0(nau3) = .3;

Page 71: Trabalho final pronto   30-11-10

73 u0(nau3+nny) = .3;

74 u0(nau3+2*nny) = .3;

75 u0(nau1+1) = .3;

76 u0(nau1+nny+1) = .3;

77 u0(nau2+1) = .3;

78 u0(nau2+nny+1) = .3;

79 %

80 % Construcao das Matrizes do sistema

81 %

82 % Construção em Gama 0

83 %

84 for i = 2:ny

85 A(i,i+nny) = -alfa/dx;

86 B(i,i+nny) = alfa/dx;

87 A(i,i+2*nny)= alfa/(4*dx);

88 B(i,i+2*nny)= -alfa/(4*dx);

89 end;

90 %

91 % Construção para os nodos centrais

92 %

93 for j = 1:1:nx-1

94 for i = nny*j+2:nny*j+ny

95 A(i,i-nny) = -alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

96 B(i,i-nny) = +alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

97 A(i,i-1) = -alfa*dt/(2*dy*dy)-V2(i-1)/(4*dy);

98 B(i,i-1) = +alfa*dt/(2*dy*dy)+V2(i-1)/(4*dy);

99 A(i,i) = 1+alfa*dt/(dx*dx)+alfa*dt/(dy*dy)+sig*dt/2;

100 B(i,i) = 1-alfa*dt/(dx*dx)-alfa*dt/(dy*dy)+sig*dt/2;

101 A(i,i+1) = -alfa*dt/(2*dy*dy)+V2(i+1)*dt/(4*dy);

Page 72: Trabalho final pronto   30-11-10

102 B(i,i+1) = alfa*dt/(2*dy*dy)-V2(i+1)*dt/(4*dy);

103 A(i,i+nny) = -alfa*dt/(2*dx*dx)+V1*dt/(4*dx);

104 B(i,i+nny) = alfa*dt/(2*dx*dx)-V1*dt/(4*dx);

105 end;

106 end;

107 %

108 % Construção para a fronteira Gama 3

109 %

110 for i = 2*nny:nny:nx*nny

111 A(i,i) = 3*alfa/(4*dy)-K3/2;

112 B(i,i) = -3*alfa/(4*dy)-K3/2;

113 A(i,i-1) = -alfa/(dy);

114 B(i,i-1) = alfa/(dy);

115 A(i,i-2) = alfa/(4*dy);

116 B(i,i-2) = -alfa/(4*dy);

117 end;

118 %

119 % Construção para a fronteira Gama 1

120 %

121 for j = 1:nx-1

122 i = nny*j+1;

123 A(i,i) = 3*alfa/(4*dy)-K1/2;

124 B(i,i) = -3*alfa/(4*dy)-K1/2;

125 A(i,i+1) = -alfa/(dy);

126 B(i,i+1) = alfa/(dy);

127 A(i,i+2) = alfa/(4*dy);

128 B(i,i+2) = -alfa/(4*dy);

129 end;

130 %

Page 73: Trabalho final pronto   30-11-10

131 % Construção para a fronteira Gama 2

132 %

133 for i = nx*nny+1:ntn

134 A(i,i) = 3*alfa/(4*dx)-K2/2;

135 B(i,i) = -3*alfa/(4*dx)-K2/2;

136 A(i,i-nny) = -alfa/(dx);

137 B(i,i-nny) = alfa/(dx);

138 A(i,i-2*nny) = alfa/(4*dx);

139 B(i,i-2*nny) = -alfa/(4*dx);

140 end;

141 %

142 % Estabelecendo vetor d

143 %

144 %for i = 10*ny:11*ny

145 % d(i) = 0.0001;

146 %end;

147 d(ntn-nau3) = 0.0001;

148 d(ntn-nau3-nny) = 0.0001;

149 d(ntn-nau3-2*nny) = 0.0001;

150 d(nau4) = 0.0002;

151 d(nau4+nny) = 0.0002;

152 d(nau3) = 0.0005;

153 d(nau3+nny) = 0.0005;

154 d(nau3+2*nny) = 0.0005;

155 d(nau1+1) = 0.0003;

156 d(nau1+nny+1) = 0.0003;

157 d(nau2+1) = 0.0003;

158 d(nau2+nny+1) = 0.0003;

159 %

Page 74: Trabalho final pronto   30-11-10

160 % Fatoracao L U da matriz de rigidez

161 %

162 [ll uu] = lu(A);

163 %

164 % fazendo a matriz malha para o grid

165 %

166 k=0;

167 for i=1:nx;

168 for j=1:ny;

169 k=k+1;

170 ind = (i-1)*nny + j;

171 malha(k,1)=ind;

172 malha(k,2)=ind+nny;

173 malha(k,3)=ind+1;

174 k=k+1;

175 malha(k,1)=ind+nny+1;

176 malha(k,2)=ind+1;

177 malha(k,3)=ind+nny;

178 end;

179 end;

180 %

181 % montagem da malha de coordenadas dos nos

182 %

183 k=0;

184 for i=1:nnx

185 x = (i-1)*dx;

186 for j = 1:nny

187 y = (j-1)*dy;

188 k = k + 1;

Page 75: Trabalho final pronto   30-11-10

189 coord(k,1) = x;

190 coord(k,2) = y;

191 end;

192 end;

193 %

194 % estruturando o vetor solucao para o grafico

195 fig=figure;

196 mov = avifile('animacao6.avi')

197 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

198 F = getframe(gca);

199 mov = addframe(mov,F);

200 %

201 % resolução dos sucessivos sistemas.

202 %

203 nsp1 = 2*nny+ny/2; % Nó próximo a fronteira Gama 0

204 nsp2 = (nx/2)*(ny/2); % Nó ao centro do domínio.

205 nsp3 = (ntn-1)/2; % Nó próximo a fronteira Gama 3 - na parte central do

domínio

206 nsp4 = ntn-ny/2-1; % Nó sobre a fronteira Gama 2

207 %

208 % resolução dos sucessivos sistemas.

209 %

210 for it = 1:nt

211 nosep1(it) = u0(nsp1);

212 nosep2(it) = u0(nsp2);

213 nosep3(it) = u0(nsp3);

214 nosep4(it) = u0(nsp4);

215 t(it) = (it-1)*dt;

216 ys = ll\(B*u0+d);

Page 76: Trabalho final pronto   30-11-10

217 s = uu\ys;

218 if mod(it,2)==1

219 trisurf(malha,coord(:,1),coord(:,2),u0),title('Cenario

6'),xlabel('\Gamma_1'),ylabel('\Gamma_0'),view(0,90),colorbar,shading interp;

220 F = getframe(gca);

221 mov = addframe(mov,F);

222 end;

223 u0=s;

224 end;

225 t(it+1) = (it)*dt;

226 nosep1(it+1) = u0(nsp1);

227 nosep2(it+1) = u0(nsp2);

228 nosep3(it+1) = u0(nsp3);

229 nosep4(it+1) = u0(nsp4);

230 mov = close(mov);

231 subplot(2,2,1)

232 plot(t,nosep1),grid on,title('Nó prox. \Gamma_0'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');

233 subplot(2,2,2)

234 plot(t,nosep2),grid on,title('Nó ao centro de \Omega'), xlabel('tempo (horas)'),

ylabel('concentração(ppm)');;

235 subplot(2,2,3)

236 plot(t,nosep3),grid on,title('Nó ao centro de \Gamma_3'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

237 subplot(2,2,4)

238 plot(t,nosep4),grid on,title('Nó sobre \Gamma_2'), xlabel('tempo(horas)'),

ylabel('concentração(ppm)');;

239 etime(clock,t0);