Sei sulla pagina 1di 23

Programa em fortran 90 para representao grfica da soma de duas ondas

Prof. Dr. Walter F. de Azevedo Jr.

azevedolab.net

2010 Dr. Walter F. de Azevedo Jr.

Resumo
Ondas Interferncia Representao matemtica de ondas Arquivos necessrios Compilao do arquivo fonte Cdigo fonte Uso do programa add2waves Referncias

2010 Dr. Walter F. de Azevedo Jr.

Ondas
Fenmenos ondulatrios so comuns, desde de exemplos buclicos, como uma onda formada num lago, a fenmenos no to bvios, como as ondas eletromagnticas. A representao grfica, normalmente satisfatria para os propsitos da interao da radiao eletromagntica com cristais, faz uso de funes peridicas, como a funo seno, ao lado. A figura a representao grfica da funo amplitude, A(x)= sen (x), com x variando de 0 a 2 unidades de distncia (ud). Nesta representao a amplitude est em funo da posio e varia de -1 a 1 unidades de amplitude (ua).

2010 Dr. Walter F. de Azevedo Jr.

Ondas
Podemos expressar a amplitude em funo do tempo, para caracterizar a variao temporal, o grfico ao lado uma representao da funo A(t)=sen(t), com t variando de 0 a 2 unidades de tempo (ut). A amplitude pode representar diversas grandezas fsicas, tais como, amplitude de vibrao, campo eltrico, presso entre outras. O eixo x pode representar a variao em funo do tempo ou da posio.

2010 Dr. Walter F. de Azevedo Jr.

Ondas
Caracterizamos as ondas mecnicas peridicas, ou ondas peridicas, pela oscilao dos tomos e molculas que compem o meio, onde a onda se propaga. A freqncia da onda (f) a freqncia de oscilao dos tomos e molculas do meio. O perodo, T = 1 / f, o tempo que leva para um tomo ou molcula particular passar por um ciclo completo do movimento de oscilao. O comprimento de onda () a distncia, entre dois tomos, que oscilam em fase, ao longo da direo de propagao da onda mecnica. Na representao abaixo temos a variao da amplitude (A) em funo da posio x.

2010 Dr. Walter F. de Azevedo Jr.

Ondas
A amplitude de uma onda caracteriza a grandeza fsica que varia com o tempo de forma peridica, normalmente representada graficamente no eixo y do grfico. A amplitude pode ser o campo eltrico, o deslocamento, a intensidade entre outras grandezas fsicas. O perodo da onda abaixo de 6,283 ms, o que representa uma onda de freqncia f = 1/T = 159,2 Hz, a amplitude da onda 1. Na representao abaixo temos a variao da amplitude em funo do tempo t.

T=6,283 ms

2010 Dr. Walter F. de Azevedo Jr.

Interferncia
As figuras ao lado mostram interferncia entre ondas, temos duas ondas em fase, ondas 1 e 2, onde seus mximos e mnimos coincidem e as ondas apresentam o mesmo comprimento de onda, o resultado da soma das duas uma onda com a amplitude resultante igual soma das amplitudes das ondas 1 e 2 e comprimento de onda igual ao das ondas 1 e 2. No caso de interferncia destrutiva temos as ondas fora de fase (3 e 4), exatamente meio comprimento de onda, onde o mximo da onda 3 coincide com o mnimo da onda 4, o resultado da soma uma onda de amplitude zero.
Interferncia construtiva Interferncia destrutiva

2010 Dr. Walter F. de Azevedo Jr.

1+2

3+4

Representao matemtica
Podemos representar matematicamente ondas e, consequentemente, fenmenos ondulatrios, por meios de funes peridicas como seno e coseno, ou combinaes dessas funes. A onda abaixo pode ser representada pela seguinte funo: E1 (t) = A . sen ( .t) , onde A indica a amplitude da onda, a freqncia angular ( = 2.f ), onde f a freqncia. O campo expresso em unidades de campo (uc) e o tempo em unidades de tempo(ut)

A
2010 Dr. Walter F. de Azevedo Jr.

Representao matemtica
As figuras abaixo mostram os grficos de duas ondas, sendo que a segunda apresenta o dobro da frequncia da primeira. Vemos claramente que dobramos o nmero de ondas completas no mesmo perodo.
E1 = 2.sen(.t); = 2.f, com f = 0,159 Hz

E2 = 2.sen(.t);

= 2.f, com f = 0,318 Hz

2010 Dr. Walter F. de Azevedo Jr.

Representao matemtica
Outra caracterstica fsica da onda sua fase. A fase representa a posio da onda com relao a origem do sistema de coordenadas no qual a onda desenhada. Por exemplo, a onda E2 = 2.sen(.t + ) est deslocada radianos em relao onda E1 = 2.sen(.t). Abaixo temos a representao grfica de duas ondas, sendo que a segunda est deslocada /2 radianos com relao primeira.
E1 = 2.sen(.t)
E1 E2

E2 = 2.sen(.t + /2)
2010 Dr. Walter F. de Azevedo Jr.

Representao matemtica
Vamos considerar a soma de duas ondas (E1 e E2), ambas com mesma freqncia, mas com amplitudes 2 uc e 4 uc, respectivamente, como representado abaixo, uc unidade de campo eltrico, para deixarmos de uma forma geral. E1 (t) = 2.sen(.t) E2 (t) = 4.sen(.t) E(t) =E1(t) + E2(t) = E(t) =2.sen(.t ) + 4.sen(.t) = 6. sen(.t)

2010 Dr. Walter F. de Azevedo Jr.

Representao matemtica
Consideremos agora uma segunda onda (onda 2) com a mesma amplitude A, comprimento de onda e deslocada um ngulo de fase , em relao a onda 1. Podemos representar matematicamente a onda 2 por meio da seguinte funo: E2 (t) = A . sen ( .t + ), onde A indica a amplitude da onda, a freqncia angular = 2.f , onde f a freqncia, indica a fase da onda, como vimos anteriormente. E1 (t) = 2.sen(.t) E2 (t) = 2.sen(.t+)

2010 Dr. Walter F. de Azevedo Jr.

Representao matemtica
Estamos em condies de considerarmos a soma de duas ondas de fase qualquer. Por exemplo, as ondas E1 e E2, quando somadas geram a onda E1 + E2, o cdigo fonte em fortran 90 para a soma de duas ondas quaisquer mostrado nos prximos slides.

E1+E2

E1 (t) = 2.sen(.t) E2 (t) = 2.sen(.t+) E1+E2 = 2[sen(.t) + sen(.t+)]


2010 Dr. Walter F. de Azevedo Jr.

Arquivos necessrios
A tabela 1 traz os arquivos necessrios para executarmos o presente tutorial. Tabela 1. Arquivos para executarmos o presente tutorial Arquivo add2waves.f90 add2waves.exe dislin.mod Descrio Arquivo fonte em fortran 90. Arquivo executvel para windows 32 bits Biblioteca grfica compilada
2010 Dr. Walter F. de Azevedo Jr.

Compilao do arquivo fonte


Para compilar o programa add2waves.f90 voc deve ter a biblioteca dislin.mod na mesma pasta e digitar: f90link a add2waves

A partir deste comando geramos o executvel add2waves.exe . Uma vez gerado o executvel no necessrio que a biblioteca dislin.mod esteja na mesma pasta do executvel. O cdigo fonte do add2waves est nos prximos slides. A parte referente biblioteca dislin est indicada em vermelho.
2010 Dr. Walter F. de Azevedo Jr.

Cdigo fonte
! ! Add2waves ! ! This program generates a plot for a sum of two wave functions E1 and E2, ! ! E1 or E2 = A*Sin(omega*t-phase), ! ! where A is amplitude in arbitrary units ! omega is angular frequency, omega = 2*Pi*freq, (freq = frequency in Hz) ! phase is the phase angle in radians ! A sum is calculates and ploted. ! E = E1 + E2 ! ! This program needs dislin library (http://www.mps.mpg.de/dislin/) ! ! Copyright: Walter Filgueira de Azevedo Junior, Ph.D, 2010 ! ! Support by Conselho Nacional de Desenvolvimento Cientifico e Tecnologico-CNPq ! Brazil ! ! Walter F. de Azevedo Jr. (2010) (http://azevedolab.net) ! Subroutine efunction1(x,y,amplitude,phase,frequency,aux1) Implicit none Real, dimension(500) :: x,y Real :: amplitude,phase,frequency,aux1,omega Double precision :: Pi = 3.1415926535897932384626433832795d0 Integer i ! Loop to generate vectorx and vectory do i=1,500,1 x(i) = (i-1)*aux1 omega = 2*Pi*frequency*x(i)-phase y(i) = amplitude*Sin(omega) end do End Subroutine efunction1

2010 Dr. Walter F. de Azevedo Jr.

Cdigo fonte
Subroutine addwaves1(y1,y2,y3) Implicit none Real, dimension(500) :: y1,y2,y3 Integer i ! Loop to sum E1 and E2 do i=1,500,1 y3(i) = y1(i) + y2(i) end do End Subroutine addwaves1 ! Main program Add2waves ! ! Copyright: Walter Filgueira de Azevedo Junior, Ph.D, 2010 ! ! Support by Conselho Nacional de Desenvolvimento Cientifico e Tecnologico-CNPq ! Brazil ! ! Walter F. de Azevedo Jr. (2010) (http://azevedolab.net) ! Program Add2waves Use dislin Implicit None Real, dimension(500) :: vx1,vy1,vx2,vy2,vy3 Real :: xstep,amp1,freq1,phase1,amp2,freq2,phase2,aux,amp

2010 Dr. Walter F. de Azevedo Jr.

Cdigo fonte
! Reads wave parameters aux = 10./500 print *,'*******************************************************************' print *,'Defining Wave function 1' print *,'Type frequency in Hertz' read(*,*)freq1 print *,'Type phase in rad' read(*,*)phase1 print *,'Type amplitude in arbitrary units (au)' read(*,*)amp1 print *,'*******************************************************************' print *,'Defining Wave function 2' print *,'Type frequency in Hertz' read(*,*)freq2 print *,'Type phase in rad' read(*,*)phase2 print *,'Type amplitude in arbitrary units (au)' read(*,*)amp2 ! Call subroutine efunction1 twice call efunction1(vx1,vy1,amp1,phase1,freq1,aux) call efunction1(vx2,vy2,amp2,phase2,freq2,aux) ! Adding waves call addwaves1(vy1,vy2,vy3)

2010 Dr. Walter F. de Azevedo Jr.

Cdigo fonte
! Here we call dislin plotting routines ! ! Here we establish intended display format before the other ! Dislin routines are called into action ! call metafl('XWIN') ! to initialize the Dislin routines call disini call pagera call complx ! The axpos places axes on this page with the arguments of the ! function corresponding to the lower left corner of an axis system ! call axspos(450,1800) ! The axslen sets the length of the axes call axslen(2200,1200)

call labdig(-1,'X') call ticks(10,'XY') ! The titlin defines the title string. ! Then title builds and inserts the title appropriately. call titlin('Adding Waves: E(t) = E1(t) + E2(t) (RED)',1) call titlin('E1(t) = A1*Sin(omega1*t - phase1) (BLUE)',2) call titlin('E2(t) = A2*Sin(omega2*t - phase2) (GREEN)',3) xstep = vx1(500)/10.

2010 Dr. Walter F. de Azevedo Jr.

! Here we label the axes call name('Time(s)','X') call name('Amplitude(au)','Y')

Cdigo fonte
! The GRAF plots a two-dimensional axis system. ! The call is: CALL GRAF (XA, XE, XOR, XSTP, YA, YE, YOR, YSTP) level 1 ! or: void graf (float xa, float xe, float xor, float xstp, float ya, float ye, ! float yor, float ystp); ! XA, XE are the lower and upper limits of the X-axis. ! XOR, XSTP are the first X-axis label and the step between labels. ! YA, YE are the lower and upper limits of the Y-axis. ! YOR, YSTP are the first Y-axis label and the step between labels. amp = 1.05*(amp1 + amp2) call graf(0.,vx1(500),vx1(1),xstep, -1.*amp,1.*amp,-1.*amp,.2*amp) call title ! The color sets the color of the plotted points and the curves connecting them call color('BLUE') ! The curve connects data points with lines (or can plot them with symbols). call curve(vx1,vy1,500) call color('GREEN') call curve(vx2,vy2,500) call color('RED') call curve(vx1,vy3,500) ! call color('FORE')

! The dash changes the line plotting style dashed. call dash ! The xaxgit plots only the y = 0 line. call xaxgit ! Here we finish dislin call disfin End Program Add2waves

2010 Dr. Walter F. de Azevedo Jr.

Uso do programa add2waves


Abaixo temos exemplo do uso do programa add2waves para a soma de duas ondas com fase zero, frequncia 0.318 Hz, a onda um de amplitude 2 e a onda 2 de amplitude 3.
******************************************************************* Defining Wave function 1 Type frequency in Hertz 0.318 Type phase in rad 0 Type amplitude in arbitrary units (au) 2 ******************************************************************* Defining Wave function 2 Type frequency in Hertz 0.318 Type phase in rad 0 Type amplitude in arbitrary units (au) 3

2010 Dr. Walter F. de Azevedo Jr.

Uso do programa add2waves


O resultado da entrada de dados a tela grfica abaixo. Este programa foi testado em windows mas pode ser compilado em outros sistemas operacionais.

2010 Dr. Walter F. de Azevedo Jr.

Referncias
Drenth, J. (1994). Principles of Protein X-ray Crystallography. New York: SpringerVerlag. Landau, R.H. A first course in scientific computing. Princeton University Press, New Jersey, 2005.

http://www.wolfram.com/
2010 Dr. Walter F. de Azevedo Jr.

Potrebbero piacerti anche