mle_fold_x Subroutine

public pure subroutine mle_fold_x(this, mass_flux_x_layer, nx1, ny, nz)

Add the FK x-face transport into the per-layer zonal mass flux, AFTER continuity_zonal_flux fills it and BEFORE the zonal tracer advect / divergence — so the augmented flux transports both h and tracers (conservative; no velocity touched). No-op when disabled.

Arguments

Type IntentOptional Attributes Name
type(ocean_mle_t), intent(in) :: this
real(kind=wp), intent(inout) :: mass_flux_x_layer(nx1,ny,nz)
integer, intent(in) :: nx1
integer, intent(in) :: ny
integer, intent(in) :: nz

Called by

proc~~mle_fold_x~~CalledByGraph proc~mle_fold_x mle_fold_x proc~continuity_tracer_step_split continuity_tracer_step_split proc~continuity_tracer_step_split->proc~mle_fold_x proc~run_continuity_chain run_continuity_chain proc~run_continuity_chain->proc~continuity_tracer_step_split proc~run_stage run_stage proc~run_stage->proc~continuity_tracer_step_split proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~run_stage proc~run_stage_split run_stage_split proc~run_stage_split->proc~run_continuity_chain proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step proc~ocean_dyn_step_split ocean_dyn_step_split proc~engine_step->proc~ocean_dyn_step_split proc~ocean_dyn_step_split->proc~run_stage_split proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step

Variables

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

Source Code

   pure subroutine mle_fold_x(this, mass_flux_x_layer, nx1, ny, nz)
      !! Add the FK x-face transport into the per-layer zonal mass flux,
      !! AFTER `continuity_zonal_flux` fills it and BEFORE the zonal
      !! tracer advect / divergence — so the augmented flux transports
      !! both h and tracers (conservative; no velocity touched).
      !! No-op when disabled.
      type(ocean_mle_t), intent(in) :: this
      integer, intent(in) :: nx1, ny, nz
      real(wp), intent(inout) :: mass_flux_x_layer(nx1, ny, nz)
      integer :: i, j, k
      if (.not. this%is_init) return
      if (.not. this%enable) return
      do concurrent(k=1:nz, j=1:ny, i=1:nx1)
         mass_flux_x_layer(i, j, k) = mass_flux_x_layer(i, j, k) + this%uhml(i, j, k)
      end do
   end subroutine mle_fold_x