subroutine zwallscalar(hi, hj, hk, putin, putout, bcvalue, n)
use modglobal, only:jmax, dzf, dzfi, dzhi, dzh2i, ib, ie, jb, je, kb, ke, prandtlmoli, numol
use modsubgriddata, only:ekh
use modmpi, only:myid
use initfac, only:block
integer i, j, k, il, iu, jl, ju, km
integer, intent(in) :: hi !<size of halo in i
integer, intent(in) :: hj !<size of halo in j
integer, intent(in) :: hk !<size of halo in k
real, intent(in) :: putin(ib - hi:ie + hi, jb - hj:je + hj, kb - hk:ke + hk)
real, intent(inout) :: putout(ib - hi:ie + hi, jb - hj:je + hj, kb:ke + hk)
real, intent(in) :: bcvalue
integer, intent(in) :: n
k = block(n, 6) + 1 !block location
km = k - 1 !
il = block(n, 1)
iu = block(n, 2)
jl = MAX(block(n, 3) - myid*jmax, 1)
ju = MIN(block(n, 4) - myid*jmax, jmax)
! delta=putout(3,1,2)
do j = jl, ju
do i = il, iu
putout(i, j, k) = putout(i, j, k) + ( &
0.5*(dzf(km)*ekh(i, j, k) + dzf(k)*ekh(i, j, km))* & ! zero flux
(putin(i, j, k) - putin(i, j, km))*dzh2i(k) - &
bcvalue)*dzfi(k)
end do
end do
end subroutine zwallscalar