blob: 38274d11050ed6b9d5a7535277165b19e7d1cf8c [file] [log] [blame]
c---------------------------------------------------------------------
c---------------------------------------------------------------------
subroutine tzetar
c---------------------------------------------------------------------
c---------------------------------------------------------------------
c---------------------------------------------------------------------
c block-diagonal matrix-vector multiplication
c---------------------------------------------------------------------
include 'header.h'
integer i, j, k
double precision t1, t2, t3, ac, xvel, yvel, zvel, r1, r2, r3,
> r4, r5, btuz, ac2u, uzik1
if (timeron) call timer_start(t_tzetar)
!$omp parallel do default(shared)
!$omp& private(i,j,k,t1,t2,t3,ac,xvel,yvel,zvel,r1,r2,r3,
!$omp& r4,r5,btuz,ac2u,uzik1)
do k = 1, nz2
do j = 1, ny2
do i = 1, nx2
xvel = us(i,j,k)
yvel = vs(i,j,k)
zvel = ws(i,j,k)
ac = speed(i,j,k)
ac2u = ac*ac
r1 = rhs(1,i,j,k)
r2 = rhs(2,i,j,k)
r3 = rhs(3,i,j,k)
r4 = rhs(4,i,j,k)
r5 = rhs(5,i,j,k)
uzik1 = u(1,i,j,k)
btuz = bt * uzik1
t1 = btuz/ac * (r4 + r5)
t2 = r3 + t1
t3 = btuz * (r4 - r5)
rhs(1,i,j,k) = t2
rhs(2,i,j,k) = -uzik1*r2 + xvel*t2
rhs(3,i,j,k) = uzik1*r1 + yvel*t2
rhs(4,i,j,k) = zvel*t2 + t3
rhs(5,i,j,k) = uzik1*(-xvel*r2 + yvel*r1) +
> qs(i,j,k)*t2 + c2iv*ac2u*t1 + zvel*t3
end do
end do
end do
if (timeron) call timer_stop(t_tzetar)
return
end