10º Relatório de Experimentos em Elementos Finitos

Você também pode gostar

Você está na página 1de 90

1

UNIVERSIDADE FEDERAL DO ESPRITO SANTO


CENTRO TECNOLGICO PROGRAMA DE
PS-GRADUAO EM ENGENHARIA MECNICA

HRCULES DE MELO BARCELOS

RELATRIO EXPERIMENTAL DE VALIDAO DO


PROGRAMA GERADO EM FORTRAM PARA ANLISE DA
PRECISO DE RESPOSTA MEF EM PROBLEMAS DE
VALORES DE CONTORNO

VITRIA
2011
HRCULES DE MELO BARCELOS

RELATRIO EXPERIMENTAL DE VALIDAO DO


PROGRAMA GERADO EM FORTRAM PARA ANLISE DA
PRECISO DE RESPOSTA MEF EM PROBLEMAS DE
VALORES DE CONTORNO

Relatrio de mestrado apresentado ao professor da


disciplina de Elementos de contorno, do Programa de
Ps-graduao em Engenharia Mecnica da
Universidade Federal do Esprito Santo.
Professor. Dr. Carlos Loeffler Friedrich Neto

VITRIA
2014
RESUMO

Utilizam-se modelos de engenharia, para verificao da preciso do mtodo de


elementos finitos, em domnios onde a condies de contorno so prescritas na forma
de Neumam, Dirichlet ou contendo as duas. Algumas comparaes com as solues
obtidas pelo MEF so apresentadas, utilizando como referncia, as respostas das
equaes analticas que modelam os problemas apresentados, obtendo com isto,
valores percentuais absolutos dos erros ponto a ponto.

Palavras-chave: Anlise do erro global do mtodo MEF equaes Difusivo-


convectivo-reativo com fonte
SUMRIO

1. INTRODUO ..................................................................................................... 1

1.1 A base metodolgica construda ........................................................................ 1

2. OS EXPERIMENTOS NUMRICOS .................................................................... 3

2.1 Exemplo 01 Equao Difusiva-Reativa (Helmhotz) ........................................ 3

2.2 EXEMPLO 2 Equao difusiva (Laplace) ........................................................ 8

2.3 Exemplo 3 - Transferncia de calor em uma placa retangular (Poisson) ......... 13

OBS: A anlise do erro mdio fica condicionada a comparao com a soluo


analtica, aqui no apresentada................................................................................. 16

2.4 Resfriador Bidimensional (Difusivo-reativo com fonte HelmHolz) .................. 17

2.5 Exemplo 5 Problema Difusivo-Convectivo .................................................... 23

2.6 Exemplo 6 Difusivo-convectivo com fonte ..................................................... 28

2.7 Exemplo 7 Problema Convectivo-Difusivo com velocidade varivel ............. 32

2.8 Exemplo 8 Problema Difusivo-Reativo .......................................................... 35

2.9 Exemplo 9 Transferncia de calor bidimensional Estado estacionrio


(Laplace).................................................................................................................... 40

3. Referncia ......................................................................................................... 43

4. Anexo ................................................................................................................ 44
1

1. INTRODUO

1.1 A base metodolgica construda

Vrios problemas de engenharia e outras cincias podem ser formulados em termos de


equaes diferenciais parciais (EDPs), como por exemplo, velocidade e presso de um
fluido, temperatura na previso do tempo, trajetria de um satlite articial e muitas
outras aplicaes. Neste relatrio consta a aplicao do mtodo de elementos finitos
para resolver numericamente EDPs bidimensionais do tipo:

i.

!
" !
ii.

onde # $ % & ' a soluo, % um subconjunto aberto de '( com fronteira poligonal
) )* + ), tal que )* - ), .. As fronteiras )* / ), so associadas as condies de
contorno de Dirichlet e Neumann (ii), respectivamente. O tensor de difusividade K
uma matriz diagonal 2 x 2, dada por:

122 3
0 5
3 144
iii.

onde 677 e 6(( so constantes positivas; 8 89 : ; 8< : ; = o campo de


velocidades que satisfaz > 8 . ? @ . o coeficiente de reao (constante) e
A A : ; B C( % o termo de fonte/sumidouro. Essa equao conhecida como
equao de transporte convectivo-difusivo-reativo.

Neste relatrio, foi considerado % D E F G H (regio quadrangular de '( ) e a


triangulao I, de %. Os espaos de aproximao so formados por polinmios
lineares por partes contnuos. O cdigo computacional em FORTRAN foi estruturado
em 3 grandes mdulos, a saber:
2

A. Pr-processamento:

Discretizao do domnio, atravs da gerao de malha estruturada e no

estruturadas com subdomnios triangulares.

Leitura dos parmetros de entrada: n de pontos nodais (nnos), n de elementos

(nel), tipos de condies de contorno, coeficientes da equao

(677 6(( 89 8< ? A J K , dados de montagem da malha, etc;

Gerao da malha usando gerador prprio para malhas estruturadas e o gerador

GMSH (software livre) para malhas no estruturadas;

Montagem das conectividades dos elementos;

Leitura das condies de contorno de valor prescrito;

Definio dos pontos nodais prescritos e livres (incgnitas), (clculo do nmero

de equaes neq).

B. Processamento

Clculo das matrizes e vetores locais (dos elementos);

Montagem da matriz global;

Montagem do vetor global dos termos independentes, incluindo o tratamento das

condies de contorno;

Soluo do sistema linear resultante

C. Ps processamento

Avaliao da soluo nos pontos nodais do domnio;

Visualizao da soluo.
3

2. OS EXPERIMENTOS NUMRICOS

Os experimentos numricos neste relatrio, tem como objetivo mostrar o desempenho


do mtodo de elementos finitos de Galerkin para problemas de conveco-difuso-
reao, assim com a prpria validao do cdigo gerado

2.1 Exemplo 01 Equao Difusiva-Reativa (Helmhotz)

A. Modelo matemtico:

iv. 1LM NM 3 OP 32 Q 32

OBS: as condies de contorno de Dirichlet e Neumann esto expressas conforme

figura abaixo:

Figura 1 - Representao de uma barra engastada e tracionada

As variveis de entrada para este problema so tomadas como unitrias, e a soluo

analtica para este problema definida pela equao abaixo:


4

S R
v. R TUVW 2

B. Discretizao e representao da resposta U(x,y)

A soluo analtica apresentada graficamente sobre os pontos gerados pela

triangulao em malha estruturada no domnio %, a saber:

(a) (b)

Figura 2 - (a) discretizao em malha triangular, (b) Distribuio grfica 2D das solues.

Para a figura (1.a), temos definidos 1681 pontos com 160 pontos de contorno, 1521

pontos internos e 3200 subdomnios triangulares. Abaixo temos a representao da

resposta analtica plotada no eixo z, expressando a intensidade dos valores sobre o


5

Domnio.

Figura 3 - Resposta grfica visualizada pelo Software livre ParaView

C. Anlise do Erro mdio percentual

O erro analisado, foi obtido ponto a ponto atravs da equao:

YZ[ \/A YZ[ Z]Z[^_`a


X X
\Z` YZ[ Z]Z[^_`a

O erro mdio percentual foi obtido pela mdia dos erros pontuais para cada
refinamento de malha definido a seguir, sendo considerados na mdia, apenas os
valores calculados, descartando os valores prescritos, pois estes no contribuem
para a gerao dos erros numricos.
6

Abaixo temos uma tabela com o comportamento do erro mdio percentual para
refinamentos de malha com 40, 80, 120 3 160 pontos de contorno

Malha
pontos erro
pontos de contorno interno elementos
40 81 200 0.01298%
80 361 800 0.01117%
120 841 1800 0.01205%
160 1521 3200 0.01301%
Tabela 1 - Erro mdio e descrio de malha

Erro mdio percentual


0.0135%

0.0130%
ERRO MDIO

0.0125%

0.0120%

0.0115%

0.0110%
40 80 120 160
pontos de contorno

Grfico 1 - Comportamento do erro numrico

Visando apresentar a distribuio dos erros sobre o domnio, foi gerada a figura 4 a
seguir, representando a diferena dos valores analticos e numricos para cada ponto
do domnio discretizado em 160 pontos de contorno, a saber:
7

4
Figura 4 - Imagem 2d e 3d representando os erros sobre o domnio analisado aumentados em em 10 vezes

.
OBS: A figura (4), apresenta um aumento significativo do erro mdio, sendo necessrio
a verificao de novos testes com o mtodo, utilizando outros parmetros de malhas
estruturadas, ou a aplicao de estratgias de estabilizao (mtodos estabilizados de
Petrov-Galerkin.
8

2.2 EXEMPLO 2 Equao difusiva (Laplace)

A. Modelo matemtico:

vi. kLM 3 OP 22 Q 22

OBS: as condies de contorno de Dirichlet e Neumann esto expressas conforme

figura 5 :

Figura 5 - Esquema de distribuio das condies de contorno

Conforme a equao (vi), a varivel de entrada deste problema a matriz K, e para

este problema ela equivalente a matriz identidade. A soluo analtica expressa a

seguir:
9

vii. # 9 :( ;(

B. Discretizao e representao da resposta u(x,y)

A soluo analtica apresentada graficamente sobre os pontos gerados pela

triangulao em malha estruturada no domnio %, a saber:

Figura 6 - Discretizao acima temos 1681 pontos com 160 pontos de contorno, 1521 pontos internos e 3200
subdomnios triangulares

A seguir, temos a representao da resposta analtica plotada no eixo z, expressando a

intensidade dos valores sobre o domnio.


10

Figura 7 - Representao grfica do paraboloide hiperblico ou resposta da soluo analtica sobre o


domnio estudado

C. Anlise do Erro mdio percentual

O erro analisado foi obtido ponto a ponto atravs da equao:

YZ[ \/A YZ[ Z]Z[^_`a


X X
\Z` YZ[ Z]Z[^_`a

O erro mdio percentual foi obtido pela mdia dos erros pontuais para cada
refinamento de malha definido a seguir, sendo considerado na mdia, apenas os
valores calculados, descartando os valores prescritos, pois estes no contribuem
para a gerao dos erros numricos.

Abalxo temos uma tabela com o comportamento do erro mdio percentual para
refinamentos de malha com 40, 80, 120 e 160 pontos de contorno.
11

malha
Erro
pontos de contorno pontos interno elementos
40 81 200 0,0000003730%
80 361 800 0,0000003523%
120 841 1800 0,0020980052%
160 1521 3200 0,0000004445%
Tabela 2 - Erro mdio e descrio de malha

2.5000E-05

2.0000E-05
ERRO MDIO

1.5000E-05

1.0000E-05 Series1

5.0000E-06

0.0000E+00
40 60 80 100 120 140 160
pontos de contorno

Grfico 2 - Comportamento do erro mdio percentual

OBS: Visando apresentar a distribuio dos erros sobre o domnio, foi gerado abaixo
um grfico representando a diferena dos valores analticos e numricos para cada
ponto do domnio discretizado em 160 pontos de contorno, a saber:
12

Figura 8 - Distribuio dos erros no domnio elevados em 2,5 x 10^6 vezes.

OBS: Mesmo com a preciso do mtodo, observa-se pela figura 8, que com o aumento
do refinamento da malha, h um aumento significativo do erro mdio, sendo necessria
a verificao de novos testes com o mtodo, utilizando outros parmetros de malhas
estruturadas, ou a aplicao de estratgias de estabilizao (mtodos estabilizados de
Petrov-Galerkin).
13

2.3 Exemplo 3 - Transferncia de calor em uma placa retangular (Poisson)

A. Modelo Matemtico:

viii. -kLM b OP c R d e3f Rf g 3fdfh i

F=1,5

Figura 9 - Distribuio das condies de contorno

Para este problema, temos que os termos k11 e k22 da matriz K de condutividade

equivalem a 1,04 cal/cm.deg.s e o calor gerado uniformemente em todos os pontos

do domnio com uma taxa de f = 1,5cal/cm3.s. As condies de contorno para este

problema esto definidas abaixo, a saber:

3d d h d

gd 3

R3 R g R

Rh 3
14

B. Discretizao e representao da resposta U(x,y)

A fim de apresentar a aproximao numrica da temperatura sobre o domnio , foi


utilizado a discretizao de malha estruturada e malha no estruturada ou automtica.
Abaixo temos as solues 2d e 3d do problema, assim como os tipos de malhas
utilizadas

a) Malha estruturada

Figura 10 - Caracterstica: 3840 elementos, 2009 pontos com 1833 pontos internos e 176 pontos de
contorno.
15

A soluo aproximada 2d e 3d esta apresentada na figura 11 a seguir:

Figura 11 - Soluo aproximada pelo mtodo de Elementos Finitos 2D

b) Malha no estruturada ou automica

Figura 12 - Caracteristica: 5110 elementos, 2644 pontos, 2468 pontos internos e 176 pontos de contorno.
16

A soluo aproximada 2d e 3d est apresentada abaixo:

Figura 13 - Soluo aproximada pelo mtodo de Elementos Finitos 2D

OBS: A anlise do erro mdio fica condicionada a comparao com a soluo


analtica, aqui no apresentada.
17

2.4 Resfriador Bidimensional (Difusivo-reativo com fonte


HelmHolz)

A. Modelo Matemtico:

M OP 3 k l 3m
4 4
j j
ix. -kLM

4
n
j
F=

Figura 14 - Esquema da distribuio das condies de contorno

Considere o problema de resfriar uma massa aquecida como mostra a Figura 15

Figura 15 - Esboo do problema


18

Exemplos podem incluir o resfriamento de chips de computadores ou amplificadores


eltricos. No modelo matemtico que descreve a transferncia de calor nas direes
x e y, temos que a matriz k a difusividade trmica (considerada constante), c e o
coeficiente de transferncia de calor, H e a altura do resfriador e uref a temperatura
de referncia.

As condies de contorno so dadas por:

R3 o3C

Rpm o3C

3d 433q

kd o3C

e os parmetros do problema so H = 2, L = W = 1, k = 1 e uref = 70. Para o coeficiente


de transferncia de calor considere os seguintes valores: c = 1, c = 10 e c = 100.

B. Discretizao e representao da resposta U(x,y)

O objetivo deste experimento foi analisar a distribuio de temperatura na placa,


variando os valores do coeficiente de transferncia de calor. A discretizao feita
sobre as malhas estruturadas e no estruturadas conforme se abaixo:

a) Malha estruturada

Caracterstica: 3200 elementos, 1681 pontos com 1521 pontos internos e 160
pontos de contorno. Ver figura 10.

A seguir, temos as distribuies de temperaturas para as variaes de c


19

Figura 16 - Distribuio de temperatura com c = 1,

Figura 17 - - Distribuio de temperatura com c = 10


20

Figura 18 - Distribuio de temperatura com c = 100

b) Malha no estruturada ou automtica

Figura 19 - Caracterstica: 4096 elementos, 2113 pontos, 1985 pontos internos e 128 pontos de contorno.
21

Figura 20 - Distribuio de temperatura com c = 1

Figura 21 - Distribuio de temperatura com c = 10


22

Figura 22 - Distribuio de temperatura com c = 100

Os modelos apresentados, deixam claro que com o aumento da constante de


transferncia de calor, o problema fica caracterizado pela reao dominante c2u/H,
alm de destacar o termo fonte c2u(ref)/H que apresenta o mesmo valor de
temperatura com relao s condies de contorno, valendo 70C. Esta condio do
problema reduz a influncia da condio de contorno igual a 200C.

Temos que as solues entre as malhas estruturadas e no estruturadas no foram


equivalentes entre si, ficando a escolha de qual malha utilizar definida pela anlise do
erro, que aqui no est apresentado.
23

2.5 Exemplo 5 Problema Difusivo-Convectivo

A. Modelo Matemtico:

s4 t
1 3
u
0 22 5 p rs4 r X X p rt r 3 32 l 32 22 3
tR4 R tR u
3 144 d
x.
td4 td

As condies de Dirichlet so dadas abaixo:

u(0,y)=u(1,y)=u(x,1)=0

. w/ : x . y
z w/ : { . y
u(x,0)=v

Breve comentrio:

avaliar diversas estratgias numricas. Quando |} | muito menor que |8 | o


A equao de difuso-conveco bidimensional um dos modelos mais usados para

fenmeno fsico dito ser conveco dominante. Neste caso, os mtodos numricos
usuais (por exemplo, mtodo de diferenas finitas centradas ou mtodo de elementos
finitos de Galerkin) podem apresentar instabilidades numricas indesejveis
(oscilaes esprias), sendo necessria a utilizao de estratgias de estabilizao
(mtodos estabilizados ou de Petrov-Galerkin).

A soluo numrica da equao de conveco-difuso caracterizada pelo nmero de


Pclet local, dado por:

K|8 |
~
|6|

onde h o comprimento caracterstico de malha. Quando pe z, o mtodo de


Galerkin apresenta instabilidades numricas. Considere uma variao decrescente da
ordem de grandeza do coeficiente de difuso k = k11 = k22 da forma

6 z z.7 z. z. z.7
24

Objetiva-se fazer um relato da qualidade da soluo aproximada encontrada medida

soluo estvel para ~ zp.


que a ordem de grandeza de k decresce para uma malha estruturada, assim como a

B. Discretizao e representao da resposta u(x,y)

Caracteristica: 3200 elementos, 1681 pontos com 1521 pontos internos e 160 pontos

de contorno. Ver figura 10

A seguir, temos as distribuies de temperaturas para as variaes de k conforme se

mostra:

Figura 23 - Distribuio de temperatura com K =1


25

Figura 24 - Distribuio de temperatura com k=10^-1

Figura 25 - Distribuio de temperatura com c = 10^-3. Observa-se perda da qualidade da soluo


26

Figura 26 - Perda da qualidade da soluo com valores de k iguais a 10^-7 e 10^-10 da esquerda para direita

Os dados acima permitem verificar que as oscilaes esprias surgem para valores
abaixo de k=10-3, logo se pode antecipar que o clculo do valor de k deve ser maior do
que 10-3, para o nmero de Pclet aproximadamente 1, Como |8 | unitrio e o valor
de ~ z, temos que :
K
|6|

Como o parmetro de malha equivale ao dimetro circunscrito do subdomnio triangular


da malha, ver figura 17, temos que h equivale a hipotenusa do tringulo issceles de
cateto igual a 1/40 (subdiviso do contorno para a malha de 160 pontos de contorno)
ou seja:

Figura 27
27

O valor do parmetro de malha fica definido como:

K y y.. z.( ,

Com isto a matriz de difuso fica valendo:

|6| z . z.( ,
Logo a figura 28 apresenta o mnimo valor de K onde pode iniciar a perda de qualidade
da soluo (ou elevao dos erros)

Figura 28
28

2.6 Exemplo 6 Difusivo-convectivo com fonte

A. Modelo Matemtico:

s4 t
1 3
u
0 22 5 p rs4 r X X p rt r b 32 l 32 32 2
tR4 R tR u
3 144 d
xi.
td4 td

As condies de Dirichlet so dadas abaixo:

u(0,y)=u(1,y)=u(x,1)=0

. w/ : x .
z w/ : { .
u(x,0)=

Como o exemplo 5, temo que neste tambm fica caracterizado que a soluo numrica
da equao de conveco-difuso caracterizada pelo nmero de Pclet local, dado
por:

K|8 |
~
|6|

Tambm fica considerado uma variao decrescente da ordem de grandeza do


coeficiente de difuso k = k11 = k22 da forma

6 z z.7 z. z. z.7

Objetiva-se fazer um relato da qualidade da soluo aproximada encontrada medida

soluo estvel para ~ zp.


que a ordem de grandeza de k decresce para uma malha estruturada, assim como a
29

B. Discretizao e representao da resposta u(x,y)

Caracterstica: 3200 elementos, 1681 pontos com 1521 pontos internos e 160 pontos
de contorno. Ver figura 12

A seguir, temos as distribuies de temperaturas para as variaes de k conforme se


mostra:

Figura 29 - Distribuio de temperatura para k = 1

Figura 30 - Distribuio de temperatura para k = 10^-1


30

Figura 31 - - Distribuio de temperatura para k = 10^-3

Os dados acima, permitem verificar que as oscilaes esprias surgem para valores
abaixo de k=10-3, logo o clculo do valor de k para o nmero de Pclet
aproximadamente 1, deve ser maior do que 10-3

Como |8 | unitrio e o valor de ~ z, temos que :


K
|6|

Com o parmetro de malha definido no problema 5 temos:

K y y.. z.( ,

|6| z . z.( ,

Cuja soluo grfica est representada a seguir:


31

Figura 32 - Distribuio de temperatura com k mnimo para incio das oscilaes esprias

Pela soluo, observado que o valor mnimo de k calculado que aproxima o valor de
Pclet mantem a qualidade dos resultados para a malha utilizada.
32

2.7 Exemplo 7 Problema Convectivo-Difusivo com velocidade varivel

A. Modelo Matemtico:

s4 t
1 3
u
0 22 5 p rs4 r X X p rt r 3
tR4 R tR
3 144 d
xii.
td4 td

22 l 22 Q u
3

As condies de Dirichlet so dadas abaixo e distribudas conforme figura 33

u(x,y)=0 R d B !

Figura 33

Neste problema, o seguimento


, com O=(0,0) e A=(0,-1), -e uma fronteira interna
com valores prescritos conforme abaixo

Rd 3 3d -seno(d
33

Considera-se uma variao decrescente da ordem de grandeza do coeficiente de


difuso k = k11 = k22 , da forma:

6 z z.7 z. z. z.7

Objetiva-se fazer um relato da qualidade da soluo aproximada encontrada medida


que a ordem de grandeza de k decresce para uma malha estruturada.

B. Discretizao e representao da resposta u(x,y)

Caracterstica: 3200 elementos, 1681 pontos com 1521 pontos internos e 160 pontos

de contorno. Ver figura 12

A seguir, temos as distribuies de temperaturas para as variaes de k conforme se


mostra:

6 z 6 10^-1 6 :10^-2

6 10^-5

6 :10^-2 6 10^-3 6 :10^-4

Figura 34 - Comportamento da soluo e variao decrescente da matriz difusiva em 2D


34

6 z 6 10^-1 6 :10^-2

6 10^-5

6 :10^-2 6 10^-3 6 :10^-4

Figura 35 - Comportamento da soluo e variao decrescente da matriz difusiva em 3D

Figura 36 - Destaque para a visualizao 3D com k=10^-5


35

As figuras de 34 a 36 permitem verificar que a reduo do termo difusivo, torna o


problema convectivo dominante e que a cada decrscimo do valor de K, maior a
participao do vetor convectivo beta, aumentando tambm a colaborao dos valores
prescritos internamente durante as interpolaes.

2.8 Exemplo 8 Problema Difusivo-Reativo

A. Modelo Matemtico:

s4
1 3
0 22 5 p rs4 r NM b
tR4
3 144
xiii.
td4

32 l 32 2 3p h

As condies de Dirichlet so dadas abaixo:

u(x,y)=0 para x< 1, u(x,y)=0 para y<1 e u(x,1)=u(1,y)=1

Figura 37 - Disposio das condies de contorno


36

Breve comentrio:

modelo matemtico para avaliar diversas estratgias numricas. Quando|} | muito


A equao de difuso-reao bidimensional tambm figura como um importante

menor que |?| o fenmeno fsico dito ser reao dominante. Neste caso, o mtodo
de elementos finitos de Galerkin apresenta instabilidades numricas indesejveis
(oscilaes esprias) prximo a regies de gradientes elevados, sendo necessrio a
utilizao de estratgias de estabilizao (mtodos estabilizados ou de Petrov-
Galerkin).

A soluo numrica obtida pelo mtodo de Galerkin apresenta oscilaes esprias para
este problema quando a reao predomina em relao a difuso, isto ,

K( ?
z
|6|

Considerando uma variao decrescente da ordem de grandeza do coeficiente de


difuso k = k11 = k22 da forma:

6 z z.7 z. z.7(

feito um relato da qualidade da soluo aproximada encontrada medida que a

malha, determinado uma soluo aproximada estvel para z


ordem de grandeza de k decresce para uma malha estruturada triangular. Para esta

B. Discretizao e representao da resposta u(x,y)

Caracteristica: 3200 elementos, 1681 pontos com 1521 pontos internos e 160 pontos

de contorno. Ver figura 12

A seguir, temos as distribuies de temperaturas para as variaes de k conforme se


mostra:
37

Figura 38 - Distribuio do Potencial u sobre o Domnio analisado com k=1

Figura 39 - Distribuio do Potencial u sobre o Domnio analisado com k=10^-1


38

Figura 40 - Distribuio do Potencial u sobre o Domnio analisado com k=10^-5

Figura 41 - Distribuio do Potencial u sobre o Domnio analisado com k=10^-12


39

Os dados acima, permitem verificar que as oscilaes esprias surgem para valores
abaixo de k=10-5, logo o clculo do valor de k para aproximadamente 1, deve ser
maior do que 10-5. Como ? unitrio e o valor de z, temos que :

|6| K(

Para o valor de h j obtido anteriormente, temos:

K y y.. z.( ,
|6| z z z. ,

Dados os valores acima, pde-se gerar a figura 42 abaixo:

Figura 42

Pela soluo, observado que o valor mnimo de k calculado que aproxima o


valor de a mantem a qualidade dos resultados para a malha utilizada.
40

2.9 Exemplo 9 Transferncia de calor bidimensional Estado estacionrio


(Laplace)

A. Modelo Matemtico: -kLM 3 OP 32 l 32

Considere uma placa plana quadrada mostrada na figura abaixo:

Figura 43 Esquematico para o problema de Laplace

Temos que a condutividade trmica para a placa seja de k = 10W/mC. Fica proposta
a determinao do perfil de temperatura aps entrar em regime estacionrio.
Mestrado em

As condies de contorno so dadas por:

# 9 z..

# 9p z..

# < ..

# < z..
41

i. Discretizao e representao da resposta U(x,y)

O objetivo deste experimento foi analisar a distribuio de temperatura na placa,


atravs da discretizao abaixo

Malha estruturada

a) Caracterstica: 3200 elementos, 1681 pontos com 1521 pontos internos e 160
pontos de contorno. Ver figura 10

b) Malha no estruturada

Caracterstica: 2656 elementos, 1393 pontos com 1265 pontos internos e 128 pontos
de contorno. Ver figura 12

c) Grfico da soluo gerada


42

Observa-se uma boa qualidade na soluo do problema, tanto para a malha no


estruturada quando para a malha estruturada. A anlise do erro fica condicionada a
comparao com a soluo analtica, que aqui no est mencionada.
43

3. Referncia

CATABRIGA, L. PPGI CT/UFES. Disponvel em:01 Agosto de 2014


<>.www.inf.ufes.br/~luciac>. Vitria, Esprito Santo, Brasil. Acessado em: 01 de Agosto
de 2014.

C.Jonhson. Numerical Solution of Particial Differential Equation by the finite element


method, Cambrigde University Press. 1987

G.F. Carrey and J.J oden: Finite elements Na introduction Vol1, Prentice Hall, 1986.

Introduo ao mtodo de elementos finitos, computao e anlise em EDP. Mario


Rincon e I.Shilin. UFRJ, RJ 2010.

G.F. Carrey and J.J oden: Finite elements Na introduction Vol1, Prentice Hall, 1986.

MS Gockenback, understanding and implementing the finite element method siam,


2006.

R.E.W White, Computational Modeling with Methods and Analysis, Department of


Mathematics, North Carolina State Unicersity, 2003.

T.T.R.Hughes. The Finite Elements Method. Prentice Hall, 1987.


44

4. Anexo

a) Cdigo para gerao da malha estruturada em Fortran77:

PROGRAM malha

real*8 xi,xf,yi,yf,px,py,vx,vy
integer dx,dy,np,nel

real*8 xy[allocatable](:,:)
integer vp[allocatable](:)

character*20 arqout !Busca dados e inseri resposta


common imp
imp=1
C Este programa gera uma malha triangular em um domnio
C quadrado/retangular com a origem independente da posio

write(*,*)'Digite x inicial'
read(*,*)xi
write(*,*)'Digite x final'
read(*,*)xf
write(*,*)'Digite y inicial'
read(*,*)yi
write(*,*)'Digite y final'
read(*,*)yf
write(*,*)'Digite o numero de intervalos em x'
read(*,*)dx
write(*,*)'Digite o numero de intervalos em y'
read(*,*)dy
45

nel=2*(dx)*(dy)

c impresso
write(*,'(A\)')' Digite o nome do arquivo de saida=>'
read(*,'(A20)')arqout
open(imp,file=arqout)

c numero de pontos
np=(dx+1)*(dy+1)
allocate(xy(np,2))
allocate(vp(np))

c Calcula parmetro Ix e Iy
call param(xi,xf,yi,yf,dx,dy,px,py)

c Calcula coordenadas x e y
call coord(imp,np,xi,xf,yi,yf,dx,dy,px,py,vx,vy,vp,xy)

c Calcula condies de contorno e elementos


call ccelem(imp,np,dx,dy,xy,xi,xf,yi,yf)

c Monta a triangulao
call triang(imp,nel,np,xy,dx,dy,xi,xf)

read(*,*)
stop
end

c
subroutine param(a,b,c,d,e,f,g,h)
46

real*8 a,b,c,d,g,h
integer e,f

c calcula px
if(a.gt.0.and.b.gt.0)then
g=(b-a)/e
else
if(a.lt.0.and.b.lt.0)then
g=(abs(a)-abs(b))/e
else
g=(b+abs(a))/e
endif
endif

c calcula py
if(c.gt.0.and.d.gt.0)then
h=(d-c)/f
else
if(c.lt.0.and.d.lt.0)then
h=(abs(c)-abs(d))/f
else
h=(d+abs(c))/f
endif
endif
return
end

c
subroutine coord(imp,np,a, b, c, d, e, f, g, h, i, j, v,cd)
real*8 a,b,c,d,g,h,i,j,cd(np,2),z(np)
47

integer e,f,k,w,soma
integer v(np)

do k=1,np
v(k)=k
z(k)=0
enddo

write(imp,*)'$MeshFormat'
write(imp,*)'2.2 0 8'
write(imp,*)'$EndMeshFormat'
write(imp,*)'$Nodes'
write(imp,1)v(np)
1 format(i5)

soma=0
do while(i.ne.b.and.j.ne.d)
do w=0,f
do k=0,e
i=a+k*g
j=c+w*h
if(((w+1)+(k+1)).le.2*(e+1))then
soma=soma+1
endif
cd(soma,1)=i
cd(soma,2)=j
write(imp,2)v(soma),cd(soma,1),cd(soma,2),z(soma)
2 format(i5,1x,e10.4,1x,e10.4,1x,e10.4)

enddo
enddo
48

enddo
return
end

c
subroutine ccelem(imp,np,dx,dy,xy,xi,xf,yi,yf)
real*8 xy(np,2),xi,xf,yi,yf
integer dx,dy,cx,cy,z,h
integer cont[allocatable](:),a[allocatable](:),b[allocatable](:),
+ cc[allocatable](:),nocc[allocatable](:)
z=2*dx*dy
nc=2*(dx+dy)

allocate(cont(z+nc))
allocate(a(nc))
allocate(b(nc))
allocate(cc(nc))
allocate(nocc(nc))
cx=1
cy=1

write(imp,*)'$EndNodes'
write(imp,*)'$Elements'
write(imp,3)z+nc
3 format(i5)
c preenche cont
do i=1,(z+nc)
cont(i)=i
enddo
do i=1,nc
nocc(i)=0
49

a(i)=0
b(i)=0
enddo

c preenche cc
do i=1,dx
cc(i)=7
enddo
do i=(dx+1),(dx+dy)
cc(i)=8
enddo
do i=(dx+dy+1),(2*dx+dy)
cc(i)=9
enddo
do i=(2*dx+dy+1),2*(dx+dy)
cc(i)=10
enddo

h=1
do i=1,np
if(xy(i,2).eq.yi.and.cx.le.dx)then
write(*,*)i
nocc(h)=i
h=h+1
cx=cx+1
endif
if(xy(i,1).eq.xf.and.cy.le.dy)then
write(*,*)i
nocc(h)=i
h=h+1
cy=cy+1
50

endif
enddo
cx=1
cy=1
do i=np,1,-1
if(xy(i,2).eq.yf.and.cx.le.dx)then
write(*,*)i
nocc(h)=i
h=h+1
cx=cx+1
endif
if(xy(i,1).eq.xi.and.cy.le.dy)then
write(*,*)i
nocc(h)=i
h=h+1
cy=cy+1
endif
enddo
do i=1,nc
write(imp,4)cont(i),a(i),b(i),cc(i),a(i),nocc(i),a(i)
4 format(i5,1x,i1,1x,i1,1x,i2,1x,i1,1x,i5,1x,i1)
enddo
return
end

subroutine triang(imp,nel,np,xy,dx,dy,xi,xf)

real*8 xy(np,2),xi,xf
integer nel,imp,dx,dy,np,h,w,ien[allocatable](:,:),
+ cont[allocatable](:),aux[allocatable](:)
51

allocate(aux(nel))
allocate(ien(nel,3))
allocate(cont(2*((dx)*(dy)+(dx+dy))))

do i=1,nel
aux(i)=0
ien(i,1)=0
ien(i,2)=0
ien(i,3)=0
enddo

do i=1,2*((dx)*(dy)+(dx+dy))
cont(i)=i
enddo

c write(*,*)'triangulos'
c write(*,*)'lado esquerdo'

h=1

do i=1,np-(dx+1)
if(xy(i,1).eq.xi)then
ien(h,1)=i
h=h+1
else
if(xy(i,1).eq.xf)then
ien(h,1)=i
h=h+1
52

else
ien(h,1)=i
ien(h+1,1)=i
h=h+2
endif
endif
enddo

c write(*,*)'triangulos'
c write(*,*)'lado central'

w=1

do i=1,(dy)*(dx+1)
if(xy(i,1).ne.xi)then
ien(w,2)=i
ien(w+1,2)=i+(dx+1)
w=w+2
endif
enddo
c write(*,*)'triangulos'
c write(*,*)'lado direito'

z=1

do i=(2+dx),np
if(xy(i,1).ne.xf)then
ien(z,3)=i
ien(z+1,3)=i
z=z+2
53

endif
enddo

do i=1,nel
write(imp,5)cont(i+(2*((dx)*(dy)+(dx+dy)))-nel),aux(i),aux(i)
+ ,aux(i),aux(i),ien(i,1),ien(i,2),ien(i,3)
5 format(i5,1x,i1,1x,i1,1x,i1,1x,i1,1x,i5,1x,i5,1x,i5)
enddo
return
end

b) Cdigo de Elementos finitos ( Galerkin)

PROGRAM FEM_2D

c INCIO DO PROGRAMA PRINCIPAL

c I)DECLARAO DE VARIVEIS

c CONSTANTES:

integer*1 impmat,exata,chapado
integer*4 nnos,nel,nelt,presc,neq
real*4 sig,ka,kb,h1,h2,h3,h4
real*8 j,i,w,z

c VETORES
54

integer*2 l[allocatable](:),m[allocatable](:),
+ n[allocatable](:),condbound[allocatable](:),
+ p[allocatable](:),bound[allocatable](:),
+ r[allocatable](:),l1[allocatable](:),
+ m1[allocatable](:),n1[allocatable](:),
+ o1[allocatable](:),p1[allocatable](:),
+ g[allocatable](:),auxg[allocatable](:)

integer*4 id[allocatable](:),nos[allocatable](:)

real*8 fno[allocatable](:),gv[allocatable](:),
+ fgl[allocatable](:),erro[allocatable](:)

c MATRIZES

real*8 agl[allocatable](:,:),coord[allocatable](:,:),
+ lm[allocatable](:,:),ien[allocatable](:,:)

character*20 arqin,arqout !Busca dados e inseri resposta


character*1 pula ! "

real etime, time,tarray(2) !Marca o tempo


lei=1 ! "
imp=2 ! "
time=etime(tarray) ! "
!FIM DA DECLARAO DE VARIVEIS E TEMPO DE CONTAGEM
c ******************************************************************
55

c ******************************************************************

c II) INCIO DO MENU DO USURIO


Write(*,*)' >>>>>>>>> PROGRAMA DE ELEMENTOS FINITOS 2D <<<<<<<<<'
Write(*,*)' --------------------------------'
Write(*,*)
Write(*,*)' SOL EQUACAO TRANSPORTE DIFUSIVO CONVECTIVO REATIVO'
Write(*,*)' ----------------------------------------------------'
Write(*,*)
Write(*,*)' click enter'
read(*,*)
Write(*,*)' 1) - Informe a quantidade de nos prescritos'
read(*,*)presc
Write(*,*)
Write(*,*)' 2) - Informe os valores para a matriz de Rigidez K'
Write(*,*)
Write(*,*)' k11 igual a:'
read(*,*)ka
Write(*,*)
Write(*,*)' k22 igual a'
read(*,*)kb
Write(*,*)' click enter'
read(*,*)
Write(*,*)' 3) - O valor do termo convectivo deve ser inserido no
+codigo'
Write(*,*)
56

Write(*,*)' click enter'

read(*,*)
Write(*,*)' 4) - Informe o valor do termo reativo'
read(*,*)sig
Write(*,*)
Write(*,*)'click enter'
read(*,*)
Write(*,*)' 5) - O valor do termo fonte deve ser inserido no codi
+go'
Write(*,*)'click enter'
read(*,*)
Write(*,*)' 4) - Informe as condies de Neumann'
Write(*,*)
Write(*,*)'h1'
read(*,*)h1
Write(*,*)
Write(*,*)'h2'
read(*,*)h2
Write(*,*)
Write(*,*)'h3'
read(*,*)h3
Write(*,*)
Write(*,*)'h4'
read(*,*)h4
Write(*,*)
Write(*,*)'click enter'
read(*,*)

Write(*,*)' CONTROLE DE IMPRESSAO DA RESPOSTA'


Write(*,*)
57

Write(*,*)'click enter'
read(*,*)
Write(*,*)'a) Para soluo exata digite 1, Para erro digite 2 e
+para solucao numerica digite zero'
read(*,*)exata
Write(*,*)'click enter'
read(*,*)
Write(*,*)'b) Para imprimir matriz e vetor global digite 1, se nao
+digite zero'
read(*,*)impmat
Write(*,*)'click enter'
read(*,*)
Write(*,*)'c) Para imprimir as curvas de nivel digite 1 ou zero pa
+ra plotar os dados no eixo Z'
read(*,*)chapado

* Forma de leitura de dados e exibio de soluo

write(*,'(A\)')' Digite o nome do arquivo de entrada =>'


read(*,'(A20)')arqin
open(lei,file=arqin)
write(*,'(A\)')' Digite o nome do arquivo de saida=>'
read(*,'(A20)')arqout
open(imp,file=arqout)
!FIM DO MENU DO USURIO
c ******************************************************************
c ******************************************************************
58

!*****************************************************************
c III)ARMAZENANDO DADOS DE MALHA GMSH OU MALHA ESTRUTURADA
read(lei,100)pula
100 format(a1)
read(lei,101)pula
101 format(a1)
read(lei,102)pula
102 format(a1)
read(lei,103)pula
103 format(a1)

read(lei,104)nnos !LENDO N DE NS DA MALHA


104 format(i10)
allocate(coord(nnos,2))
allocate(id(nnos))
allocate(nos(nnos))
allocate(g(nnos))
allocate(gv(nnos))
allocate(auxg(nnos))
allocate(fno(nnos))
allocate(erro(nnos))

do i=1,nnos
do j=1,2
coord(i,j)=0
enddo
enddo

do 1 i=1,nnos
59

read(lei,*)nos(i),coord(i,1),coord(i,2) !ARMAZENANDO ORDEM DOS NS


COM

1 continue

read(lei,105)pula
105 format(a1)
read(lei,106)pula
106 format(a1)

read(lei,107)nelt !LENDO O TOTAL DE CC COM ELEMENTOS


107 format(i10)

allocate(l(presc))
allocate(m(presc))
allocate(n(presc))
allocate(condbound(presc))
allocate(p(presc))
allocate(bound(presc))
allocate(r(presc))

do 2 i=1,presc
read(lei,*)l(i),m(i),n(i),condbound(i),p(i),bound(i),r(i)
2 continue

deallocate(l)
deallocate(m)
deallocate(n)
deallocate(p)
60

deallocate(r)

nel=nelt-presc
allocate(l1(nel))
allocate(m1(nel))
allocate(n1(nel))
allocate(o1(nel))
allocate(p1(nel))
allocate(ien(nel,3))
allocate(lm(nel,3))

do 3 i=1,nel
ien(i,1)=0
ien(i,2)=0
ien(i,3)=0
3 continue

do 4 i=1,nel
read(lei,*)l1(i),m1(i),n1(i),o1(i),p1(i),ien(i,1),ien(i,2),ien(i,3
+)
4 continue

deallocate(l1)
deallocate(m1)
deallocate(n1)
deallocate(o1)
deallocate(p1)
!FIM DO ARMAZENAMENTO DE DADOS DE MALHA
61

c ******************************************************************
c ******************************************************************

c IV) INCIO DA MANIPULAO DOS DADOS DA MALHA E PREPARAO DAS


CONDIES DE
C FRONTEIRA:

!a)VETOR ID:QUE IDENTIFICA A EQUAO DE CADA N NO


PRESCRITO,
! ATRIBUINDO 0 E ELIMINANDO OS NS PRESCRITOS DAS EQUA-
! ES

w=1 !inicializa com 1


z=0 !flag de controle

do 5 i=1,nnos
z=0 !sempre antes de entrar no loop de comparao, coloca flag em 0
do 6 j=1,presc
if(nos(i).eq.bound(j))then

z=1 !obs: significa que achou o numero nos dados de contorno, atuali
!zando-se para 1, seno, fica em 0
endif
6 continue
62

if(z.eq.1) then
id(i)=0
else
id(i)=w
w=w+1
endif

5 continue
neq=id(1)

!b)MATRIZ LM: IDENTIFICA O NMERO DA EQUAO PARA CADA N


DO
! ELEMENTO TRIANGULAR, AFIM DE APLICAR A SUA CONTRI-
! BUIO DA MATRIZ LOCAL PARA A MATRIZ GLOBAL

do 7 i=1,nel
do 8 j=1,3

lm(i,j)=id(ien(i,j))

8 continue
7 continue

!c) CC's: IDENTIFICA SE O N EST PRESCRITO NO DOMNIO


! E ATRIBUI A ESTE A SOLUO CONHECIDA COM VALORES
! NULOS OU NO NULOS SENDO UMA FUNO DEFINIDA OU
63

! UMA CONSTANTE

! * Identifica os ns que esto prescritos com referncia a


! posio global de cada n no domnio. o vetor g(i) in-
! forma o tipo de condio de contorno de dirichlet para
! cada n

do 9 i=1,nnos !alimenta vetor auxiliar


if(id(i).eq.0)then
auxg(i)=i
else
auxg(i)=0
endif
9 continue

do 10 i=1,nnos
gv(i)=0
g(i)=0
10 continue

do 11 i=1,presc
do 12 j=1,nnos
if(bound(i).eq.auxg(j))then
g(j)=condbound(i)
endif
12 continue
11 continue
64

c IV.I) PRIMEIRO ACESSO DO USURIO ***********************************<

! * Inserir as condies prescritas de Dirichlet de cada n


! no vetor soluo gv(i)
do 13 i=1,nnos !Atribui o valor da CC pela identificao da CC

if(g(i).eq.7)then

gv(i)=0
else
if(g(i).eq.8)then

gv(i)=0

else
if(g(i).eq.9)then

gv(i)=0

else
if(g(i).eq.10)then

gv(i)=0

else
if(g(i).eq.11)then
65

gv(i)=0

endif
endif
endif
endif
endif
13 continue
!FIM DA PREPACAO DAS CONDIES DE FRONTEIRA:
c ******************************************************************
c ******************************************************************

c V) SEGUNDO ACESSO DO USURIO ************************************<

c V.I) Preparao do termo fonte e definio da ao de domnio


c atravs de constante definida ou das coord global, de cada
c n do elemento

do 14 i=1,nnos
fno(i)=0
14 continue
!FIM DA PREPACAO DO TERMO FONTE:
c ******************************************************************
c ******************************************************************
66

!VI) INCIO DA ALOCAO DINMICA DO DIMENSIONAMENTO DA MATRIZ E


! DO VETOR GLOBAL
c ******************************************************************
c ******************************************************************
neq=id(1)

do 15 i=1,nnos
if(neq.lt.id(i)) then
neq=id(i)
endif
15 continue

allocate(fgl(neq))
allocate(agl(neq,neq))

do 16 i=1,neq
fgl(i)=0
16 enddo

do 17 i=1,neq
do 18 j=1,neq
agl(i,j)=0
18 continue
17 continue
!FIM DA ALOCAO DINMICA DO DIMENSIONAMENTO DA MATRIZ E DO
67

!VETOR GLOBAL
c ******************************************************************
c ******************************************************************

c VII) INCIO DE CHAMADA DAS SUBROTINAS DE GERAO E IMPRESSO


! DAS SOLUES OBTIDAS PELO MTODO DE ELEMENTOS FINITOS
PARA
c PROBLEMA PROPOSTO
c ******************************************************************
c ******************************************************************
call preenche(nel,ien,nnos,coord,ka,kb,sig,fno,gv,lm,neq,fgl,
+ agl,h1,h2,h3,h4,bound,presc)

if(impmat.eq.1)then
call impriglobal(imp,neq,agl,fgl)
endif

call gauss(d,neq,agl,fgl)

call solucaonum(nnos,neq,id,gv,fgl)

call impressao(exata,imp,nnos,nel,gv,coord,ien,chapado,erro)
!FIM DAS SUBROTINAS DE GERAO E IMPRESSO DAS SOLUES
OBTIDAS
!PELO MTODO DE ELEMENTOS FINITOS PARA O PROBLEMA PROPOSTO
c ******************************************************************
c ******************************************************************
68

!**********************
!FINALIZANDO O PROGRAMA
stop
end
!**********************

c 1SUBROTINA: ESTRUTURANDO A MATRIZ GLOBAL

subroutine preenche(nel,ien,nnos,coord,ka,kb,sig,fno,gv,lm,neq,
+ fgl,agl,h1,h2,h3,h4,bound,presc)

!CONSTANTES
integer*4 nel,nnos,presc,neq,ng1,ng2,ng3,e
real*4 h1,h2,h3,h4,ka,kb,sig,Ar,xm,ym,conv,reat,bx,by,i,j,dif

!VETORES
integer*2 bound(presc)
real*8 fno(nnos),gv(nnos),fgl(neq),ff(3),fg(3),fl(3),fh(3),
+ x(3),y(3),a(3),b(3),c(3)
69

!MATRIZES
real*8 agl(neq,neq),coord(nnos,2),lm(nel,3),ien(nel,3),
+ d(3,3),cv(3,3),rt(3,3),al(3,3)

!CALCULO

! a) INICIALIZANDO O LOOP DE ARMAZENAMENTO DA MATRIZ E VETOR


GLOBAL
do 100 e=1,nel

! b) ZERA MATRIZES E VETORES LOCAIS


do 101 i=1,3
ff(i)=0
fg(i)=0
fh(i)=0
101 continue

do 102 i=1,3
do 103 j=1,3
d(i,j)=0
cv(i,j)=0
rt(i,j)=0
al(i,j)=0
103 continue
102 continue

! b) DEFININDO COORDENADAS LOCAIS DO ELEMENTO LOCAL


ng1=0
ng2=0
70

ng3=0

do 104 i=1,3
x(i)=0
y(i)=0
104 continue

ng1=ien(e,1)
ng2=ien(e,2)
ng3=ien(e,3)
x(1)=coord(ng1,1)
x(2)=coord(ng2,1)
x(3)=coord(ng3,1)
y(1)=coord(ng1,2)
y(2)=coord(ng2,2)
y(3)=coord(ng3,2)

! c) CALCULA REA E COEFICIENTES a,b,c de interpolao


Ar=(0.5)*((x(1))*(y(2))-(x(2))*(y(1))+(x(3))*
+ (y(1))-(x(1))*(y(3))+(x(2))*(y(3))-(x(3))*(y(2)))

! d) CALCULA AS CONSTANTES DO POLINMIO DE INTERPOLAO


a(1)=(x(2))*(y(3))-(x(3))*(y(2))
a(2)=(x(3))*(y(1))-(x(1))*(y(3))
a(3)=(x(1))*(y(2))-(x(2))*(y(1))

b(1)=y(2)-y(3)
b(2)=y(3)-y(1)
b(3)=y(1)-y(2)

c(1)=x(3)-x(2)
71

c(2)=x(1)-x(3)
c(3)=x(2)-x(1)

! e)CALCULA O BARICENTRO
xm=(0.330)*(x(1)+x(2)+x(3))
ym=(0.330)*(y(1)+y(2)+y(3))

! f)CONSTANTES DE INTEGRAO PARA AS MATRIZES CONVECTIVA


! REATIVA E DIFUSIVA
conv=0.167/1000
reat=0.083/1000
dif=1/(4000*Ar)

c >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ENTRADA DO
USURIO
! g) CALCULA CONSTANTES
do 105 i=1,3
bx=0 !<<< FUN CONVEC xm e ym
by=0 !<<< FUN CONVEC xm e ym
105 continue
c >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>FIM DO USURIO

! h) CALCULA MATRIZ DIFUSIVA LOCAL


do 106 i=1,3
do 107 j=1,3
d(i,j)=dif*((ka*(b(i))*b(j))+(kb*(c(i))*c(j)))
107 continue
106 continue

! i) CALCULA A MATRIZ CONVECTIVA LOCAL


72

do 108 i=1,3
do 109 j=1,3
cv(i,j)=conv*((bx*b(j))+(by*c(j)))
109 continue
108 continue

! j) CALCULA A MATRIZ REATIVA LOCAL


do 110 i=1,3
do 111 j=1,3
if(i.eq.j)then

rt(i,j)=sig*(Ar*conv)
else
rt(i,j)=sig*(Ar*reat)
endif
111 continue
110 continue

! k) CALCULA A MATRIZ LOCAL TOTAL


do 112 i=1,3
do 113 j=1,3
al(i,j)=(d(i,j))+(cv(i,j))+(rt(i,j))
113 continue
112 continue

! l) CALCULA VETOR LOCAL DEVIDO FONTE


ff(1)=((Ar/12)*((2*fno(ien(e,1)))+(fno(ien(e,2)))+(fno(ien(e,3))))
+ )/1000
ff(2)=((Ar/12)*((fno(ien(e,1)))+(2*fno(ien(e,2)))+(fno(ien(e,3))))
+ )/1000
73

ff(3)=((Ar/12)*((fno(ien(e,1)))+(fno(ien(e,2)))+(2*fno(ien(e,3))))
+ )/1000

! m) CONTRIBUIO DA CONDIO DE DIRICHLET


fg(1)=((al(1,1))*gv(ien(e,1))+(al(1,2))*gv(ien(e,2))+(al(1,3))*
+ gv(ien(e,3)))
fg(2)=((al(2,1))*gv(ien(e,1))+(al(2,2))*gv(ien(e,2))+(al(2,3))*
+ gv(ien(e,3)))
fg(3)=((al(3,1))*gv(ien(e,1))+(al(3,2))*gv(ien(e,2))+(al(3,3))*
+ gv(ien(e,3)))

! n) CONTRIBUIO POR NEUMANN


aa=0
do 114 i=1,presc
if(ng1.eq.bound(i))then
aa=1
endif
114 continue

bb=0
do 115 i=1,presc
if(ng2.eq.bound(i))then
bb=1
endif
115 continue

cc=0
do 116 i=1,presc
if(ng3.eq.bound(i))then
cc=1
74

endif
116 continue

if(aa.eq.0.and.bb.eq.0.and.y(1).eq.0.and.y(2).eq.0.and.x(1).ne.coo
+ rd(1,1).and.x(2).ne.coord(nnos,1))then
fh(1)=((h1)*abs((x(2))-(x(1))))/2000
fh(2)=((h1)*abs((x(2))-(x(1))))/2000
fh(3)=0
endif

if(aa.eq.0.and.bb.eq.0.and.x(1).eq.coord(nnos,1).and.x(2).eq.coord
+ (nnos,1))then
fh(1)=((h2)*abs((y(2))-(y(1))))/2000
fh(2)=((h2)*abs((y(2))-(y(1))))/2000
fh(3)=0
endif

if(bb.eq.0.and.cc.eq.0.and.y(2).eq.coord(nnos,2).and.y(3).eq.coord
+ (nnos,2).and.x(2).ne.coord(nnos,1).and.x(3).ne.coord(1,1))then
fh(1)=0
fh(2)=((h3)*abs((x(3))-(x(2))))/2000
fh(3)=((h3)*abs((x(3))-(x(2))))/2000
endif

if(aa.eq.0.and.cc.eq.0.and.x(1).eq.coord(1,1).and.x(3).eq.coord(1,
+ 1))then
fh(1)=((h4)*abs((y(3))-(y(1))))/2000
fh(2)=0
fh(3)=((h4)*abs((y(3))-(y(1))))/2000
75

endif

! o) CALCULA O VETOR LOCAL TOTAL


do 117 i=1,3
fl(i)=ff(i)-fg(i)+fh(i)
117 continue

! p) DEFININDO A MATRIZ GLOBAL E VETOR GLOBAL


do 118 i=1,3
if(lm(e,i).ne.0) then
fgl(lm(e,i))=fgl(lm(e,i))+fl(i)
do 119 j=1,3
if(lm(e,j).ne.0) then
agl(lm(e,i),lm(e,j))=
+ agl(lm(e,i),lm(e,j))+al(i,j)
endif
119 continue
endif
118 continue
100 continue
return
end
c fim

c 2SUBROTINA: IMPRIME A MATRIZ GLOBAL


76

subroutine impriglobal(imp,neq,agl,fgl)

!CONSTANTES
integer imp,neq

!VETORES
real*8 fgl(neq)

!MATRIZES
real*8 agl(neq,neq)

!CALCULO
write(*,*)"IMPRESSAO DA MATRIZ GLOBAL E VETOR GLOBAL"
write(*,*)"agl(i,j)"

do 200 i=1,neq
write(imp,300)(agl(i,j),j=1,neq)
300 format(64(2x,f12.6))
200 continue

write(imp,301)
301 format(\\)

write(*,*)"fgl(i)"

do 201 i=1,neq
write(imp,302)fgl(i)
302 format(2x,f12.6)
201 continue
return
end
77

c FIM

c 3SUBROTINA: SOLUO DO SISTEMA LINEAR


subroutine gauss(d,n,a,b)

!CONSTANTES
real*8 i,j

!VETORES
real*8 b(n)

!MATRIZES
real*8 a(n,n)

!CALCULO
n1=n-1
do 100 k=1,n1
k1=k+1
c=a(k,k)
if (abs(c)-0.000001)1,1,3
1 do 7 j=k1,n
if (abs(a(j,k))-0.000001)7,7,5
5 do 6 l=k,n
c=a(k,l)
a(k,l)=a(j,l)
6 a(j,l)=c
c=b(k)
78

b(k)=b(j)
b(j)=c
c=a(k,k)
go to 3
7 continue
8 write(6,2) k
2 format('**** singularity in row',i5)
d=0.
go to 300

3 c=a(k,k)
do 4 j=k1,n
4 a(k,j)=a(k,j)/c
b(k)=b(k)/c
do 10 i=k1,n
c=a(i,k)
do 9 j=k1,n
9 a(i,j)=a(i,j)-c*a(k,j)
10 b(i)=b(i)-c*b(k)
100 continue

if (abs(a(n,n))-0.000001)8,8,101

101 b(n)=b(n)/a(n,n)

do 200 l=1,n1
k=n-l
k1=k+1
do 200 j=k1,n
200 b(k)=b(k)-a(k,j)*b(j)
79

d=1.
do 250 i=1,n
250 d=d*a(i,i)
300 return
end
c FIM

c 4SUBROTINA: SOLUO NUMRICA


subroutine solucaonum(nos,neq,id,gv,fgl)

!CONSTANTES
real*8 i,j
integer*4 nos,neq

!VETORES
real*8 gv(nos),fgl(neq)
integer*4 id(nos)

!CALCULO
j=1
do 1 i=1,nos
if(id(i).ne.0)then
gv(i)=fgl(j)
j=j+1
endif
1 continue
return
80

end
c FIM

c 5SUBROTINA: IMPRESSO DA SOLUO DO SISTEMA LINEAR


c NA FORMA PARAVIEW
subroutine impressao(exata,imp,nos,nel,g,c,in,chapado,er)

!CONSTANTES
integer*1 exata,chapado
integer*4 nos,nel,imp

!VETORES
real*8 g(nos),n(nel),er(nos)

!MATRIZES
real*8 c(nos,2),in(nel,3)

!CALCULO
WRITE(imp,*)'<VTKFile type="UnstructuredGrid">'
WRITE(imp,*)' <UnstructuredGrid>'
WRITE(imp,*)' <Piece NumberOfPoints="',nos,'" NumberOfCe
+lls="',nel,'">'
WRITE(imp,*)' <PointData>'
WRITE(imp,*)' <DataArray type="Float32" Name="
+u_comp" '
WRITE(imp,*)'Format="ascii">'
81

c a) imprime a soluo exata ou numrica

if(exata.eq.1)then
do 400 i=1,nos
g(i)=0
g(i)=sinh(c(i,1))/1.5430806348152
400 continue
end if

if(exata.eq.2)then
do 401 i=1,nos
er(i)=0
er(i)=((10**4))*(g(i)-(sinh(c(i,1))/1.5430806348152))
401 continue
end if

if(exata.eq.2)then

do 402 i=1,nos
WRITE(imp,500)er(i)
500 format(22x,e10.4)
402 continue

else

do 403 i=1,nos
WRITE(imp,501)g(i)
82

501 format(22x,e10.4)
403 continue
endif

WRITE(imp,*)' </DataArray>'
WRITE(imp,*)' </PointData>'
WRITE(imp,*)' <CellData>'
WRITE(imp,*)' </CellData>'
WRITE(imp,*)' <Points>'
WRITE(imp,*)' <DataArray type="Float32"'
WRITE(imp,*)'NumberOfComponents="3" Format="ascii">'

if(chapado.eq.1)then
do 404 i=1,nos
g(i)=0
er(i)=0
404 continue
end if

if(exata.eq.2)then
do 405 i=1,nos
WRITE(imp,502)c(i,1),c(i,2),er(i)
502 format(28x,f9.6,1x,f9.6,1x,e10.4)
405 continue

else
83

do 406 i=1,nos
WRITE(imp,503)c(i,1),c(i,2),g(i)
503 format(28x,f9.6,1x,f9.6,1x,e10.4)
406 continue

endif

WRITE(imp,*)' </DataArray>'
WRITE(imp,*)' </Points>'
WRITE(imp,*)' <Cells>'
WRITE(imp,*)' <DataArray type="Float32" Name="co
+nnectivity"'
WRITE(imp,*)'Format="ascii">'

do 407 i=1,nel
WRITE(imp,504)(in(i,1)-1),(in(i,2)-1),(in(i,3)-1)
504 format(28x,f6.1,1x,f6.1,1x,f6.1)
407 continue

WRITE(imp,*)' </DataArray>'
WRITE(imp,*)' <DataArray type="Float32" Name="of
+fsets"'
WRITE(imp,*)'Format="ascii">'

do 408 i=1,nel
n(i)=0
408 continue

do 409 i=1,nel
n(i)=3*i
84

409 continue

do 410 i=1,nel
write(imp,505)n(i)
505 format(25x,f9.1)
410 continue

WRITE(imp,*)' </DataArray>'
WRITE(imp,*)' <DataArray type="Float32" Name="ty
+pes"'
WRITE(imp,*)'Format="ascii">'

do 411 i=1,nel
n(i)=0
411 continue

do 412 i=1,nel
n(i)=5
412 continue

do 413i=1,nel
write(imp,506)n(i)
506 format(25x,f3.1)
413 continue

WRITE(imp,*)' </DataArray>'
WRITE(imp,*)' </Cells>'
WRITE(imp,*)' </Piece>'
WRITE(imp,*)' </UnstructuredGrid>'
85

WRITE(imp,*)'</VTKFile>'
return
end

Você também pode gostar