fill_vorticity_z Subroutine

public subroutine fill_vorticity_z(state_handle, buf)

The model’s OWN relative vorticity ζ = ∂v/∂x − ∂u/∂y, at the same C-grid corners coriolis_adv computes it at (circulation/area form, C1 slip factor), averaged corner -> cell centre. See fill_vorticity_z_impl for the formula and why it replaced a centred T-point stencil that differenced ocean velocity straight against the zero stored at land faces (a spurious no-slip-like vorticity sheet at every coast, even under the free-slip default).

Arguments

Type IntentOptional Attributes Name
class(*), intent(in) :: state_handle
real(kind=wp), intent(inout) :: buf(:,:,:)

Calls

proc~~fill_vorticity_z~~CallsGraph proc~fill_vorticity_z fill_vorticity_z proc~fill_vorticity_z_impl fill_vorticity_z_impl proc~fill_vorticity_z->proc~fill_vorticity_z_impl proc~zero3_impl zero3_impl proc~fill_vorticity_z->proc~zero3_impl proc~fill_vorticity_z_impl->proc~zero3_impl local local proc~fill_vorticity_z_impl->local rdb_rvc_zeta_corner rdb_rvc_zeta_corner proc~fill_vorticity_z_impl->rdb_rvc_zeta_corner

Source Code

   subroutine fill_vorticity_z(state_handle, buf)
      !! The model's OWN relative vorticity ζ = ∂v/∂x − ∂u/∂y, at the same
      !! C-grid corners `coriolis_adv` computes it at (circulation/area
      !! form, C1 slip factor), averaged corner -> cell centre.  See
      !! `fill_vorticity_z_impl` for the formula and why it replaced a
      !! centred T-point stencil that differenced ocean velocity straight
      !! against the zero stored at land faces (a spurious no-slip-like
      !! vorticity sheet at every coast, even under the free-slip default).
      class(*), intent(in) :: state_handle
      real(wp), intent(inout) :: buf(:, :, :)
      select type (state => state_handle)
      class is (ocean_state_t)
         if (.not. state%metrics%is_init) then
            call zero3_impl(buf)
            return
         end if
         call fill_vorticity_z_impl(state%multilayer%u_face_x_layer, &
                                    state%multilayer%v_face_y_layer, &
                                    state%metrics%dyCv, &
                                    state%metrics%dxCu, &
                                    state%metrics%wet_q, &
                                    state%metrics%wet_T, &
                                    state%metrics%iareaBu, &
                                    state%coriolis_adv%no_slip, &
                                    state%multilayer%nz_ml, buf)
      end select
   end subroutine fill_vorticity_z