Professional Documents
Culture Documents
SOFTWARE EDUCACIONAL:
SIMULAÇÃO DE ONDAS ELETROMAGNÉTICAS
BELÉM
2005
INSTITUTO DE ESTUDOS SUPERIORES DA AMAZONIA
CURSO DE ENGENHARIA DE COMPUTAÇÃO
SOFTWARE EDUCACIONAL:
SIMULAÇÃO DE ONDAS ELETROMAGNÉTICAS
BELÉM
2005
INSTITUTO DE ESTUDOS SUPERIORES DA AMAZONIA
CURSO DE ENGENHARIA DE COMPUTAÇÃO
SOFTWARE EDUCACIONAL:
SIMULAÇÃO DE ONDAS ELETROMAGNÉTICAS
Data:____/_____/______
Conceito: ____________
Banca Examinadora
__________________________________________
Profª Dr. José Felipe Souza de Almeida
Orientador
______________________________________________
Prof. MSc. Alekssandra do Socorro da Silva
Membro
______________________________________________
Prof. MSc. João Ferreira Santana Filho
Membro
BELÉM
2005
AGRADECIMENTOS
À Deus que mesmo com todas as dificuldades sempre me deu forças e mostrou-
me uma saída, mesmo quando acreditei que esta não existia;
Meus pais José Maria Pereira Barbosa (paraninfo) e Ana Selma Emim Barbosa
que ao decorrer de minha vida me educaram e me deram orientação para a formação de
minha índole para seguir meu caminho de forma digna juntamente com minha irmã Ana
Cinthia Emim Barbosa, minha maior amiga e exemplo de garra e vitória me servindo como
espelho e claro meu amado filho Marcelo Felipe Chaves Barbosa, minha fonte de
motivação e carinho;
Agradeço também minha namorada Marluce de Souza Pereira Furtado, pois foi
o ponto de partida para essa conquista estando ao meu lado nos momentos decisivos com
muita compreensão, carinho e dedicação;
Aos meus Amigos Carlos Mauricio Borges Leão, Sahid Dahás Jorge e Marcela
de Souza Pereira Furtado que acreditaram em mim e foram fundamentais desde a origem
deste sonho.
Aos colegas e professores que me ajudaram no processo de formação de minha
vida profissional;
Ao prof. Dr. José Felipe Almeida digno de minha admiração e estima pelo
amigo, mestre e orientador, dedicando-se com muita seriedade e excelência.
RESUMO
ABSTRACT
CAPÍTULO 1 – INTRODUÇÃO.............................................................................................10
1.1 MOTIVAÇÕES..............................................................................................................10
1.2 CONTEXTO DO TRABALHO......................................................................................11
1.3 OBJETIVOS DO TRABALHO......................................................................................11
1.4 ORGANIZAÇÃO DO TRABALHO..............................................................................11
CAPÍTULO 2 - MÉTODO FDTD............................................................................................12
2.1 ALGORITMO DE YEE..................................................................................................12
2.2 FORMULAÇÃO ANALÍTICA......................................................................................12
2.3 DIFERENÇAS CENTRADAS.......................................................................................14
2.4 LEAP-FROG...................................................................................................................15
3.1 FERRAMENTAS UTILIZADAS...................................................................................18
3.2 TELAS DE FUNCIONAMENTO E IMPLEMENTAÇÃO...........................................20
CAPÍTULO 4 - CONCLUSÃO................................................................................................28
4.1 RESULTADOS OBTIDOS............................................................................................28
4.2 TRABALHOS FUTUROS.............................................................................................28
REFERÊNCIAS........................................................................................................................29
APÊNDICE....................................................................................................................32
RESUMO
This work has as objective to the development of software with ends directed toward
the education. For this, a computational environment will be developed using a graphical
interface. The proposal is to present for images some related physical concepts with the
propagation of electromagnetic waves. Between these concepts it is the measure of the
coefficient of transmission and reflection of an electric wave propagating in regions with
different characteristics. For this study, the cases unidimensional and bidimensional will be
boarded for the previous execution of a computational algorithm code by finite difference
time domain - FDTD method. Moreover, in this software is presented a move development
and its correspondence with a graphical interface.
1.1 MOTIVAÇÕES
Este trabalho tem como objetivo geral apresentar o “Aplicativo Educacional Editor
de Ondas” (versão 1.0) para uso como ferramenta didática complementar as aulas de onda
eletromagnéticas da disciplina Física.
Em destaque alguns objetivos específicos do referido aplicativo.
• Visualização de ondas eletromagnéticas em primeira dimensão mostrando contraste em
dois meios com índices diferentes.
• Visualização de ondas eletromagnéticas em segunda dimensão focalizando o fenômeno de
refração e reflexão, em meios extremamente densos.
• Mostrar o grau de permissividade durante a reflexão de uma onda.
• Visualizar a variação de amplitude de uma determinada onda.
Nesta seção, será feita a apresentação do método FDTD, proposto por Kane S. Yee
em 1966.
Para um meio isotrópico, o cálculo dos campos elétrico e magnético é feito a partir
das seguintes equações de Maxwell:
∂B
∇ × E= −
∂t ;
∂D
∇ × H= J +
∂t ,
D = ε E;
B = µH;
J = σ E,
∂ Hx 1 ∂ Ey ∂ Ez
= −
∂t µ ∂z ∂y ;
∂ Hy 1 ∂ Ez ∂ Ex
= −
∂t µ ∂x ∂ z ;
∂ Hz 1 ∂ Ex ∂ Ey
= −
∂t µ ∂y ∂x ;
∂ Ex 1 ∂ Hz ∂ Hy
= − − σ Ex
∂t ε ∂y ∂z ;
∂ Ey 1 ∂ Hx ∂ Hz
= − − σ Ey
∂t ε ∂z ∂x ;
∂ Ez 1 ∂ Hy ∂ Hx
= − − σ Ez
∂t ε ∂x ∂y .
14
Fi ,nj ,k = F (i∆ x , j ∆ y , k ∆ z , n∆ t ) = F (i , j , k , n )
,
ou simplesmente
Fi ,nj ,k = F n (i , j , k )
,
Note-se que estas equações envolvem erros de segunda ordem. Assim, a precisão
do método é caracterizada como sendo de 2ª ordem.
Note-se que estas equações envolvem erros de segunda ordem. Assim, a precisão
do método é caracterizada como sendo de 2ª ordem.
2.4 LEAP-FROG
z
∆y
(i, j, k+1)
Hx ∆z
Ez
(i+1, j, k+1)
y
Hy
Ey
(i, j, k)
Ex
Hz ∆x
(i+1, j, k)
x
(a) (b)
Figura 1 – (a) Posição dos componentes de campo vetorial em uma célula unitária. (b) Célula no interior de
uma malha 3-D.
Fonte: Autoria própria
n + 1/ 2 n+ 1/ 2
n+ 1 ∆ t Eyi , j + 1/ 2 , k + 1 − Eyi , j + 1/ 2 , k
Hx i , j + 1 / 2 , k + 1/ 2 = Hx n
i , j + 1 / 2 , k + 1/ 2 + [ +
µ ∆z
Ezin, +j1, k/ 2+ 1 / 2 − Ezin, +j1+ /12, k + 1/ 2
+ ];
∆y
n + 1/ 2 n + 1/ 2
∆ t Ezi + 1, j , k + 1/ 2 − Ezi , j , k + 1 / 2
Hyin++11/ 2 , j , k + 1/ 2 = Hyin+ 1/ 2 , j , k + 1/ 2 + [ +
µ ∆x
Exin++11//22, j , k − Exin++11//22, j , k + 1
+ ];
∆z
n + 1/ 2 n + 1/ 2
∆ t Exi + 1/ 2 , j + 1, k − Exi + 1/ 2 , j , k
Hzin++11/ 2 , j + 1 / 2 , k = Hyin+ 1/ 2 , j + 1/ 2 , k + [ +
µ ∆y
Eyin, +j1+ /12/ 2 , k − Eyin++11, /j2+ 1 / 2 , k
+ ];
∆x
Hzin+ 1/ 2 , j + 1/ 2 , k − Hzin+ 1/ 2 , j − 1/ 2 , k
Exin++11//22, j , k = Ai + 1/ 2 , j , k Exin+−11//22, j , k + Bi + 1/ 2 , j , k [ +
∆y
Hyin+ 1 / 2 , j , k − 1/ 2 − Hyin+ 1 / 2 , j , k + 1/ 2
+ ];
∆z
n + 1/ 2 n − 1/ 2
Hxin, j + 1/ 2 , k + 1/ 2 − Hxin, j + 1/ 2 , k − 1/ 2
Ey i , j + 1/ 2 , k = Ai , j + 1/ 2, k Ey i , j + 1/ 2 , k + Bi , j + 1/ 2 , k [ +
∆z
Hzin− 1/ 2 , j + 1 / 2 , k − Hzin+ 1/ 2 , j + 1/ 2 , k
+ ];
∆x
17
Hyin+ 1 / 2 , j , k + 1/ 2 − Hyin− 1 / 2 , j , k + 1/ 2
Ezin, +j1, k/ 2+ 1/ 2 = Ai , j , k + 1/ 2 Ezin, −j1, k/ 2+ 1 / 2 + Bi , j , k + 1/ 2 [ +
∆x
Hxin, j − 1/ 2 , k + 1/ 2 − Hxin, j + 1/ 2 , k + 1/ 2
+ ],
∆y
∆ tσ (i , j , k )
1−
2ε (i , j , k )
A=
∆ tσ (i , j , k )
1+
2ε (i , j , k ) ;
∆t
B= .
∆ tσ (i , j , k )
ε (i , j , k )[1+ ]
2ε (i , j , k )
CAPÍTULO 3 – PROTÓTIPO
MATLAB:
É uma linguagem de programação apropriada ao desenvolvimento de aplicativos
de natureza técnica. Como o próprio nome sugere, o MATLAB é bem adequado àqueles
que desejam implementar e testar soluções com facilidade e precisão (como num
laboratório !), sem perder tempo com detalhes específicos de linguagem de programação.
Para isso, possui facilidades de computação, visualização e programação, dentro de um
ambiente amigável e de fácil aprendizado.
O nome MATLAB vem de Matrix Laboratory. MATLAB foi originalmente
desenvolvido para prover um acesso amigável ao tratamento de vetores e matrizes. Como
poderá ser visto adiante, os elementos básicos da linguagem são exatamente os vetores e
matrizes. Por esse motivo é importante que esses elementos e suas operações sejam bem
entendidos para que se obter o melhor do MATLAB.(O QUE..., 2006)
No “Aplicativo Educacional Editor de Ondas” o MATLAB foi usado no
desenvolvimento numérico de um programa fonte para uma simulação computacional feita
com recursos do método FDTD que quando executados criam arquivos vetoriais para gerar
imagens.
FORTRAN:
É a primeira linguagem de alto nível que saiu ao mercado. Já que continua sendo
útil em Física.( O QUE...., 2006)
Um pouco de história
• Esta linguagem processual foi a primeira de alto nível (1957)
• Desenvolvido por IBM para o IBM 704.
19
FLASH:
É a tecnologia mais utilizada na Web que permite a criação de animações
vetoriais. O interesse no uso de gráficos vetoriais é que estes permitem realizar animações de
pouco peso, ou seja, que demoram pouco tempo para ser carregadas. (O QUE..., 2006)
No “Aplicativo Educacional Editor de Ondas” o Flash foi usado para importar
arquivos ‘.avi” e “.mpeg”, os transformando-o em arquivos swf para visualização do vídeo de
ondas eletromagnéticas. Ainda com o uso do Flash Mx foi criado a interface gráfica do
“Aplicativo Educacional Editor de Ondas” (versão 1.0) criando botões , menus e submenus
para dar acesso a visualização de cada vídeo criado em swf.
OCTAVE:
É uma linguagem de alto nível voltada para análise numérica. Ele provê interface
em linha de comando para resolução numérica de problemas lineares e experimentação
numérica, podendo também ser usado como linguagem orientado a batch. .( O QUE...., 2006)
No “Aplicativo Educacional Editor de Ondas” o OCTAVE foi usado para análise
numérica. Similar ao MATLAB.
20
Figura 3– Tela inicial com seus respectivos menus, submenus e botões de controle detalhados
Fonte: Autoria: Própria
22
A figura 4 abaixo mostra. uma simulação onde meio 1 (ar) é igualado ao meio 2,
ou seja o índice igual 1. Como se fosse uma pedra caindo em uma superfície lisa de um lago
visto de frente.
Abaixo na figura 8 como exemplo, é mostrado ainda no Flash Mx uma das etapas
(Movie clip) para o desenvolvimento do “Aplicativo Educacional Editor de Ondas”.
CAPÍTULO 4 - CONCLUSÃO
Para melhor efeito pedagógico este aplicativo pode ser implementado com alguns
itens; Conforme o especificado abaixo:
• Exercício proposto - Para avaliar o nível de entendimento sobre o assunto (inicialmente
sendo enviado e avaliado por e-mail previamente trocado ente aluno e professor);
• Comentários - Que podem ser feitos pelo o aluno ou professor que possam ser verificados
e respondidos via e-mail (idéia que pode ser implementada no aplicativo) por ambos para
maior entendimento do aluno;
• Outros conceitos - Pode-se criar opções para tentar visualizar e entender melhor outros
conceitos abstratos da Física como por exemplo o magnetismo que ocorre entre os ímas
(atração e repulsão)
29
REFERÊNCIAS
TAFLOVE, A. Finite Difference Time Domain Methods for eletrodynamic Analysis. New
York: Artech, 1998.
30
!loop do tempo
do n=1,nt
eez=ez(2)
eez1=ez(nx)
if(ip.eq.3)then !UPML
write(*,*) 'UPML'
write(*,*) ip
!atualização da fonte e do campo elétrico
do i=1,nx
a=c/(epsr(i)*eps0) ! coeficiente usado na Lei de Faraday
if(i.eq.ifonte)then
!fonte soft
tt=ez(ifonte)+a*(hy(i)-hy(i-1))
ez(ifonte)=amp*dexp(-1.*(n*dt-4.*sigma)**2/sigma**2)+tt
else
ez(i)=ez(i)*((1-sigx_ez(i)*dte)/(1+sigx_ez(i)*dte))+
* (a/(1+sigx_ez(i)*dte))*(hy(i)-hy(i-1))
endif
enddo
!PEC
ez(1)=0.d0
ez(nx1)=0.d0
!atualização do campo magnetico
do i=1,nx
hy(i)=hy(i)*((1-sigx_hy(i)*dte)/(1+sigx_hy(i)*dte))+
* (b/(1+sigx_hy(i)*dte))*(ez(i+1)-ez(i))
enddo
else
!atualização da fonte e do campo elétrico
do i=1,nx
a=c/(epsr(i)*eps0) ! coeficiente usado na Lei de Faraday
if(i.eq.ifonte)then
!fonte soft
tt=ez(ifonte)+a*(hy(i)-hy(i-1))
ez(ifonte)=amp*dexp(-1.*(n*dt-4.*sigma)**2/sigma**2)+tt
else
if((i.ne.1).and.(i.ne.nx1))then
ez(i)=ez(i)+a*(hy(i)-hy(i-1))
endif
endif
enddo
if(ip.eq.1) then
! se ip=1 temos parede elétrica
ez(nx1)=0.d0
ez(1)=0.d0
write(*,*) 'Parede Eletrica'
write(*,*) ip
endif
! se ip=2 temos Mur 1a. ordem
if(ip.eq.2) then
ez(1)=eez+coef*(ez(2)-ez(1)) !explique
ez(nx1)=eez1+coef1*(ez(nx)-ez(nx1)) !explique
write(*,*) 'MUR 1a. Ordem'
write(*,*) ip
endif
do i=1,nx
hy(i)=hy(i)+b*(ez(i+1)-ez(i))
enddo
endif
C*********************** SALVA QUADROS ****************************
if ( ( mod(n,NS).EQ.0 ).AND.( findex.lt.1000 ) ) then
fcent = int(findex/100)
fdez = int( (findex-100*fcent)/10 )
funid = (findex-100*fcent-10*fdez)
filename(7:7) = char(48 + funid)
filename(6:6) = char(48 + fdez )
filename(5:5) = char(48 + fcent)
open(98,file=filename(1:11))
C*************** CODIGO PARA SALVAR A MATRIZ DESEJADA **********
do i=i0,i1
write(98,*) i,ez(i)
enddo
C***************************************************************
close(98)
findex=findex+1
C-------------- Roda o GnuPlot para salvar imagem GIF para composicao de filme ---------
write(*,*) 'Salvando imagem..'
open(99,file='plotfile'//filename(5:7)//'.gpl')
rewind(99)
write(99,*) 'set xrange [10:93]'
write(99,*) 'set xtics 5'
write(99,*) 'set mxtics 5'
write(99,*) 'set xlabel "Celula i"'
write(99,*) 'set yrange [-1:1]'
write(99,*) 'set ytics 0.1'
write(99,*) 'set ylabel "Amplitude (V/m)"'
write(99,*) 'set title "Programa UniWave"'
write(99,*) 'set term gif transparent large'
write(99,*) 'set out "'//filename(1:7)//'.gif"'
write(99,*) 'plot "'//filename(1:11)//'" t"Campo E" with lines'
write(99,*) 'set out'
c write(99,*) 'set term windows'
! write(99,*) 'exit'
! write(99,*) 'pause -1'
close(99)
call system('gnuplot plotfile'//filename(5:7)//'.gpl')
endif
C******************************************************************
enddo !final do loop do tempo
!dados de saída
open(1,file='entuni.dat')
open(2,file='httuni.dat')
rewind(1)
rewind(2)
do i=i0,i1
write(1,*) i,ez(i)
write(2,*) i,hy(i)
enddo
close(1)
close(2)
Script: gif2ppm
Script: ppm2mpeg
#!/bin/bash
# ppm2mpeg
# ********