ice_mask_snow_by_ice_impl Subroutine

private 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).

Arguments

Type IntentOptional 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

Called by

proc~~ice_mask_snow_by_ice_impl~~CalledByGraph proc~ice_mask_snow_by_ice_impl ice_mask_snow_by_ice_impl proc~ice_pass_x ice_pass_x proc~ice_pass_x->proc~ice_mask_snow_by_ice_impl proc~ice_pass_y ice_pass_y proc~ice_pass_y->proc~ice_mask_snow_by_ice_impl proc~ice_transport_step ice_transport_step proc~ice_transport_step->proc~ice_pass_x proc~ice_transport_step->proc~ice_pass_y proc~engine_step_ice engine_step_ice proc~engine_step_ice->proc~ice_transport_step proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step_ice proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step_ice proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Variables

Type Visibility Attributes Name Initial
integer, private :: c
integer, private :: i
integer, private :: j

Source Code

   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