1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| PROGRAM VortexEuler
Implicit None
INTEGER :: N,i,j,k,M
REAL, Dimension(3,5):: x,y,som1, som2,r
REAL, Dimension(3):: w
DOUBLE PRECISION :: alph1,alph2,alph3
DOUBLE PRECISION :: dt
DATA w/1.d0,-1.d0,1.d-1/
!<<<<<<<< Initialisation >>>>>>>>>
N=3
M=5
dt= 1.0e-2
w=1.d0
write(*,*)'alph1'
read(*,*) alph1
write(*,*)'alph2'
read(*,*) alph2
write(*,*)'alph3'
read(*,*) alph3
!<<<<<< conditions initiales >>>>>>
x(1,1)= sin(alph1)
x(2,1)= sin(alph2)
x(3,1)= sin(alph3)
y(1,1)= cos(alph1)
y(2,1)= cos(alph2)
y(3,1)= cos(alph3)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
som1(:,1)=0.d0
som2(:,1)=0.d0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
open(10,File='Vortex euler corrigé.dat')
do k=1,M
do j=1,N
do i=1,N
if (.not.(i.ne.j)) cycle
r(i,k)=(((x(i,k)-x(j,k))**2)+ ((y(i,k)-y(j,k))**2))
r(i,k)=r(i,k)
!
som1(i,k)=som1(i,k)+ dt*((w(i)*(y(i,k)-y(j,k)))/r(i,k))
!
som1(i,k)=som1(i,k)
!
som2(i,k)=som2(i,k)+ dt*((w(i)*(x(j,k)-x(i,k)))/r(i,k))
!
som2(i,k)=som2(i,k)
!
x(j,k)= x(j,k) + dt* som1(i,k)
x(j,k)=x(j,k)
y(j,k+1)= y(j,k) + dt* som2(i,k)
y(j,k)=y(j,k)
write(10,*) x(j,k),y(j,k)
enddo
enddo
enddo
close(10)
END PROGRAM VortexEuler |
Partager