SIS2 masking_uh=uh_ice (SIS_continuity.F90:1210-1215):
uh_snow(I,c) = 0 wherever uh_ice(I,c) == 0. Face-shaped
array, works identically for the x-face (nx+1,ny,ncat) and
y-face (nx,ny+1,ncat) layouts (caller passes the right
extents). frac_neglect (SIS2’s second masking clause) is dead
at SIS2’s own default frac_neglect=0 — not ported (D-noted in
the module docstring).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | uh_ice(nfi,nfj,ncat) | |||
| real(kind=wp), | intent(inout) | :: | uh_snow(nfi,nfj,ncat) | |||
| integer, | intent(in) | :: | nfi | |||
| integer, | intent(in) | :: | nfj | |||
| integer, | intent(in) | :: | ncat |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private | :: | c | ||||
| integer, | private | :: | i | ||||
| integer, | private | :: | j |
pure subroutine ice_mask_snow_by_ice_impl(uh_ice, uh_snow, nfi, nfj, ncat) !! SIS2 `masking_uh=uh_ice` (`SIS_continuity.F90:1210-1215`): !! `uh_snow(I,c) = 0` wherever `uh_ice(I,c) == 0`. Face-shaped !! array, works identically for the x-face `(nx+1,ny,ncat)` and !! y-face `(nx,ny+1,ncat)` layouts (caller passes the right !! extents). `frac_neglect` (SIS2's second masking clause) is dead !! at SIS2's own default `frac_neglect=0` — not ported (D-noted in !! the module docstring). integer, intent(in) :: nfi, nfj, ncat real(wp), intent(in) :: uh_ice(nfi, nfj, ncat) real(wp), intent(inout) :: uh_snow(nfi, nfj, ncat) integer :: i, j, c do concurrent(j=1:nfj, i=1:nfi, c=1:ncat) if (uh_ice(i, j, c) == 0.0_wp) uh_snow(i, j, c) = 0.0_wp end do end subroutine ice_mask_snow_by_ice_impl