v-face twin of redi_open_windows_x (south j-1, north j).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | nx | |||
| integer, | intent(in) | :: | ny | |||
| integer, | intent(in) | :: | nz | |||
| real(kind=wp), | intent(in) | :: | h_layer(nx,ny,nz) | |||
| real(kind=wp), | intent(in) | :: | open_v(nx,ny+1,nz) |
Per-layer 0/1 v-face open mask ( |
||
| integer, | intent(inout) | :: | vKb(nx,ny+1) | |||
| integer, | intent(inout) | :: | vKt(nx,ny+1) |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private | :: | i | ||||
| integer, | private | :: | j | ||||
| integer, | private | :: | k | ||||
| integer, | private | :: | kb | ||||
| integer, | private | :: | kt | ||||
| logical, | private | :: | ok(NZ_STACK_MAX) |
pure subroutine redi_open_windows_y(nx, ny, nz, h_layer, open_v, vKb, vKt) !! v-face twin of `redi_open_windows_x` (south `j-1`, north `j`). integer, intent(in) :: nx, ny, nz real(wp), intent(in) :: h_layer(nx, ny, nz) real(wp), intent(in) :: open_v(nx, ny + 1, nz) !! Per-layer 0/1 v-face open mask (`metrics%open_v`, full size). integer, intent(inout) :: vKb(nx, ny + 1), vKt(nx, ny + 1) integer :: i, j, k, kb, kt logical :: ok(NZ_STACK_MAX) do concurrent(j=2:ny, i=1:nx) local(k, kb, kt, ok) do k = 1, nz ok(k) = open_v(i, j, k) > 0.5_wp .and. & rdb_vl_is_live(h_layer(i, j - 1, k)) .and. & rdb_vl_is_live(h_layer(i, j, k)) end do call redi_open_window(nz, ok, kb, kt) vKb(i, j) = kb vKt(i, j) = kt end do end subroutine redi_open_windows_y