evp_fill_cell_fields_impl Subroutine

private pure subroutine evp_fill_cell_fields_impl(mask_t, mis_in, mice_in, ci_in, mis_out, mice_out, ci_out, nx, ny)

Interior copy of the gathered mis/mice/ci, masked to mask_t (defence-in-depth beyond the caller’s own wet_T gate); ghost rows/cols zeroed (the periodic wrap that follows fills them).

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: mask_t(nx,ny)
real(kind=wp), intent(in) :: mis_in(nx,ny)
real(kind=wp), intent(in) :: mice_in(nx,ny)
real(kind=wp), intent(in) :: ci_in(nx,ny)
real(kind=wp), intent(out) :: mis_out(nx,ny)
real(kind=wp), intent(out) :: mice_out(nx,ny)
real(kind=wp), intent(out) :: ci_out(nx,ny)
integer, intent(in) :: nx
integer, intent(in) :: ny

Called by

proc~~evp_fill_cell_fields_impl~~CalledByGraph proc~evp_fill_cell_fields_impl evp_fill_cell_fields_impl proc~ice_evp_dynamics_impl ice_evp_dynamics_impl proc~ice_evp_dynamics_impl->proc~evp_fill_cell_fields_impl proc~ice_evp_dynamics ice_evp_dynamics proc~ice_evp_dynamics->proc~ice_evp_dynamics_impl proc~ice_evp_step ice_evp_step proc~ice_evp_step->proc~ice_evp_dynamics proc~engine_step_ice engine_step_ice proc~engine_step_ice->proc~ice_evp_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

Variables

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

Source Code

   pure subroutine evp_fill_cell_fields_impl(mask_t, mis_in, mice_in, ci_in, &
                                             mis_out, mice_out, ci_out, nx, ny)
      !! Interior copy of the gathered `mis`/`mice`/`ci`, masked to `mask_t`
      !! (defence-in-depth beyond the caller's own `wet_T` gate); ghost
      !! rows/cols zeroed (the periodic wrap that follows fills them).
      integer, intent(in) :: nx, ny
      real(wp), intent(in) :: mask_t(nx, ny)
      real(wp), intent(in) :: mis_in(nx, ny), mice_in(nx, ny), ci_in(nx, ny)
      real(wp), intent(out) :: mis_out(nx, ny), mice_out(nx, ny), ci_out(nx, ny)
      integer :: i, j

      do concurrent(j=1:ny, i=1:nx)
         mis_out(i, j) = mask_t(i, j)*mis_in(i, j)
         mice_out(i, j) = mask_t(i, j)*mice_in(i, j)
         ci_out(i, j) = mask_t(i, j)*ci_in(i, j)
      end do
   end subroutine evp_fill_cell_fields_impl