Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

)2.7.

2C ‫کد فرترن سوال‬


Real(8) :: y1(2000),y2(2000),yr1(2000),yr2(2000),yrr1(2000),yrr2(2000),x,xx(2000),t,z
integer :: i,j
OPEN(100,FILE='CONTOUR.txt')
WRITE (100,*)'variables = "X" , "Y"'
y1(:)=0D0
y2(:)=0D0
yr1(:)=0D0
yr2(:)=0D0
yrr1(:)=0D0
yrr2(:)=0D0
xx(:)=0D0

t=-0.01D0
do i=1,101
t=t+0.01D0

x=-1.01D0
do j=701,1401
x=x+0.01D0
if(x>t-1 .AND. x<t+1) then
y1(j)=abs(1-(t-x)**2)**0.5
xx(j)=x
else
xx(j)=x
y1(j)=0
end if
end do

x=1.01D0
do j=1,701
x=x-0.01D0
if(x>-1-t .AND. x<1-t) then
y2(902-j)=abs(1-(t+x)**2)**0.5
xx(902-j)=x
!print *,y(j)
else
xx(902-j)=x
y2(902-j)=0
!print *,y(j)
end if
end do

WRITE(100,*)'zone T="t=',t,'"'
DO j=201,1401
WRITE (100,*)xx(j),y1(j)+y2(j)
END DO
end do

t=0.99D0
do i=1,401
t=t+0.01D0
x=-0.01D0
do j=801,1401
x=x+0.01D0
if(x>t-1 .AND. x<t+1) then
y1(j)=abs(1-(t-x)**2)**0.5
xx(j)=x
else
xx(j)=x
y1(j)=0
end if
end do

x=0.01D0
do j=1,601
x=x-0.01D0
if(x>-1-t .AND. x<1-t) then
y2(802-j)=abs(1-(t+x)**2)**0.5
xx(802-j)=x
!print *,y(j)
else
xx(802-j)=x
y2(802-j)=0
!print *,y(j)
end if
end do
WRITE(100,*)'zone T="t=',t,'"'
DO j=201,1401
WRITE (100,*)xx(j),y1(j)+y2(j)
END DO
end do

!+++ Reflected Wave +++!


t=4.99D0
do i=1,1201
t=t+0.01D0
x=-0.01D0
do j=801,1601
x=x+0.01D0
if(x>t-1 .AND. x<t+1) then
y1(j)=abs(1-(t-x)**2)**0.5
xx(j)=x
else
xx(j)=x
y1(j)=0
end if
end do
z=2.01D0
do j=1,1601
z=z-0.01D0
if(z>5-t .AND. z<7-t) then
yr1(1602-j)=-(abs(1-(t+z-6)**2)**0.5)
else
yr1(1602-j)=0
end if
end do

x=0.01D0
do j=1,801
x=x-0.01D0
if(x>-1-t .AND. x<1-t) then
y2(802-j)=abs(1-(t+x)**2)**0.5
xx(802-j)=x
!print *,y(j)
else
xx(802-j)=x
y2(802-j)=0
!print *,y(j)
end if
end do

z=-2.01D0
do j=1,1601
z=z+0.01D0
if(z>t-7 .AND. z<t-5) then
yr2(j)=-(abs(1-(t-z-6)**2)**0.5)
else
yr2(j)=0
end if
end do

WRITE(100,*)'zone T="t=',t,'"'
DO j=201,1401
WRITE (100,*)xx(j),y1(j)+yr1(j)+y2(j)+yr2(j)
END DO
end do

!+++ 2 reflect Wave +++!


t=16.99D0
do i=1,701
t=t+0.01D0
z=-2.01D0
do j=1,1601
z=z+0.01D0
if(z>t-7 .AND. z<t-5) then
yr2(j)=-(abs(1-(t-z-6)**2)**0.5)
else
yr2(j)=0
end if
end do

z=2.01D0
do j=1,1601
z=z-0.01D0
if(z>17-t .AND. z<19-t) then
yrr2(1602-j)=(abs(1-(t+z-18)**2)**0.5)
else
yrr2(1602-j)=0
end if

end do

z=2.01D0
do j=1,1601
z=z-0.01D0
if(z>5-t .AND. z<7-t) then
yr1(1602-j)=-(abs(1-(t+z-6)**2)**0.5)
else
yr1(1602-j)=0
end if
end do

z=-2.01D0
do j=1,1601
z=z+0.01D0
if(z>t-19 .AND. z<t-17) then
yrr1(j)=(abs(1-(t-z-18)**2)**0.5)
else
yrr1(j)=0
end if
end do

WRITE(100,*)'zone T="t=',t,'"'
DO j=201,1401
WRITE (100,*)xx(j),yr1(j)+yrr1(j)+yr2(j)+yrr2(j)
END DO
end do

pause
end

You might also like