Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real, | intent(in) | :: | utan | |||
real, | intent(in) | :: | dx | |||
real, | intent(in) | :: | visc | |||
real, | intent(out) | :: | tau |
subroutine wallawinlet(utan,dx,visc,tau)
! this should be the same as wallaw in modboundary!!! This routine is just
! copied to avoid circular dependencies
implicit none
real, intent(in) :: utan,dx,visc
real, intent(out) :: tau
real const1, const2, const3, const4
real tausub, taupow
real sub, dutan, utankr,utanabs
real aaa,bbb
real dxi
parameter(aaa = 8.3)
parameter(bbb = 0.1428571429)
dxi = 1./dx
const1 = 0.5 * (1. - bbb) * aaa ** ((1. + bbb) / (1. - bbb))
const2 = (1. + bbb) / aaa
const3 = aaa ** (2. / (1. - bbb))
const4 = 2. / (1. + bbb)
utanabs=abs(utan)
utankr = 0.5 * visc * dxi * const3
dutan = utankr - utanabs
sub = max (sign(1.,dutan),0.)
tausub = 2. * visc * utanabs * dxi
! taupow3 = const1 * (visc * dxi)**(1.+bbb) + (const2 * (visc *
! dxi)**bbb) * utanabs
taupow = ( const1 * (visc * dxi)**(1.+bbb) + (const2 * (visc * dxi)**bbb) * utanabs)** const4
! if (taupow3<=0) then
! write(6,*) 'taupow3 <=0!!!'
! end if
tau = sub * tausub + (1.- sub) * taupow
tau = sign(tau,utan) ! give tau the same sign as utan
return
end subroutine wallawinlet