module mkwallwt {               # N-dimensional wall weights 
use patch
contains
  subroutine wallwtn( n, nwall, nwind, windwt, wallwt) {
    integer, dimension( :), pointer      :: n, nwall, nwind
    real,    dimension( :), intent( in)  :: windwt
    real,    dimension( :), intent( out) :: wallwt
    integer                              :: ipatch, stat
    wallwt = 0.
    call patch_init( n, nwall, nwind)
    do ipatch = 1, product( n) {
       stat = patch_lop( .true., .true., wallwt, windwt)
       call patch_close ()
    }
    where( wallwt /= 0.) wallwt = 1. / wallwt
  }
}
