1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
function mlt(u,v,w,nx,ny,nz,dx,dy,dz)
implicit none
real (kind=8),dimension (1:,1:,1:),intent(in) :: u,v,w
real (kind=8),intent(in) :: dx,dy,dz
integer,intent(in) :: nx,ny,nz
real(kind=8),dimension(1:nx,1:ny,1:nz,1:3) :: mlt
integer :: i,j,k
forall(i=2:nx-1,j=2:ny-1,z=2:nz-1) !attention, je ne traite pas les bords, il faut le faire à part
mlt(i,j,k,1)=(u(i+1,j,k)-2.d0*u(i,j,k)+u(i-1,j,k))/dx+(u(i,j+1,k)-2.d0*u(i,j,k)+u(i,j+1,k))/dy+(u(i,j,k+1)-2.d0*u(i,j,k)+u(i,j,k-1))/dz
mlt(i,j,k,2)=(v(i+1,j,k)-2.d0*v(i,j,k)+v(i-1,j,k))/dx+(v(i,j+1,k)-2.d0*v(i,j,k)+v(i,j+1,k))/dy+(v(i,j,k+1)-2.d0*v(i,j,k)+v(i,j,k-1))/dz
mlt(i,j,k,3)=(w(i+1,j,k)-2.d0*w(i,j,k)+w(i-1,j,k))/dx+(w(i,j+1,k)-2.d0*w(i,j,k)+w(i,j+1,k))/dy+(w(i,j,k+1)-2.d0*w(i,j,k)+u(i,j,k-1))/dz
end forall
return
end function |
Partager