ocean_remap_tracer_column Subroutine

public subroutine ocean_remap_tracer_column(nz, h_old, h_new, hTr_inout, method)

Single-column unit-test entry: wraps remap_column with the c = hTr/h ↔ hTr_new = c_new·h_new pattern, including the SAME two-sided vanishing-layer merge the production kernel runs (rdb_vl_merge_content + rdb_vl_column_conc), so this entry cannot drift from ocean_remap_tracer_field. Production callers go through that one.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nz
real(kind=wp), intent(in) :: h_old(nz)
real(kind=wp), intent(in) :: h_new(nz)
real(kind=wp), intent(inout) :: hTr_inout(nz)
integer, intent(in) :: method

Calls

proc~~ocean_remap_tracer_column~~CallsGraph proc~ocean_remap_tracer_column ocean_remap_tracer_column proc~remap_column remap_column proc~ocean_remap_tracer_column->proc~remap_column proc~remap_fold_filler_defect remap_fold_filler_defect proc~ocean_remap_tracer_column->proc~remap_fold_filler_defect rdb_vl_column_conc rdb_vl_column_conc proc~ocean_remap_tracer_column->rdb_vl_column_conc rdb_vl_merge_content rdb_vl_merge_content proc~ocean_remap_tracer_column->rdb_vl_merge_content proc~remap_column_pcm remap_column_pcm proc~remap_column->proc~remap_column_pcm proc~remap_column_plm remap_column_plm proc~remap_column->proc~remap_column_plm proc~remap_column_ppm remap_column_ppm proc~remap_column->proc~remap_column_ppm proc~remap_column_ppm_h4 remap_column_ppm_h4 proc~remap_column->proc~remap_column_ppm_h4 proc~remap_column_pqm remap_column_pqm proc~remap_column->proc~remap_column_pqm rdb_vl_is_live rdb_vl_is_live proc~remap_fold_filler_defect->rdb_vl_is_live proc~boundary_half_jump boundary_half_jump proc~remap_column_plm->proc~boundary_half_jump proc~plm_slope_nonuniform plm_slope_nonuniform proc~remap_column_plm->proc~plm_slope_nonuniform proc~remap_column_ppm->proc~remap_column_plm proc~remap_column_ppm->proc~boundary_half_jump proc~ppm_edge_nonuniform ppm_edge_nonuniform proc~remap_column_ppm->proc~ppm_edge_nonuniform proc~ppm_edge_two_cell ppm_edge_two_cell proc~remap_column_ppm->proc~ppm_edge_two_cell proc~ppm_jump_nonuniform ppm_jump_nonuniform proc~remap_column_ppm->proc~ppm_jump_nonuniform proc~remap_column_ppm_h4->proc~remap_column_plm proc~remap_column_ppm_h4->proc~boundary_half_jump proc~remap_column_pqm->proc~remap_column_ppm proc~remap_column_pqm->proc~boundary_half_jump proc~pqm_end_value_h4 pqm_end_value_h4 proc~remap_column_pqm->proc~pqm_end_value_h4 proc~pqm_solve_diag_dominant pqm_solve_diag_dominant proc~remap_column_pqm->proc~pqm_solve_diag_dominant

Variables

Type Visibility Attributes Name Initial
real(kind=wp), private :: c_new(NZ_STACK_MAX)
real(kind=wp), private :: c_old(NZ_STACK_MAX)
real(kind=wp), private :: hTr_col(NZ_STACK_MAX)
real(kind=wp), private :: hTr_src(NZ_STACK_MAX)
real(kind=wp), private :: h_new_col(NZ_STACK_MAX)
real(kind=wp), private :: h_old_col(NZ_STACK_MAX)
integer, private :: k

Source Code

   subroutine ocean_remap_tracer_column(nz, h_old, h_new, hTr_inout, method)
      !! Single-column unit-test entry: wraps `remap_column` with the
      !! c = hTr/h ↔ hTr_new = c_new·h_new pattern, including the SAME two-sided
      !! vanishing-layer merge the production kernel runs
      !! (`rdb_vl_merge_content` + `rdb_vl_column_conc`), so this entry cannot drift from
      !! `ocean_remap_tracer_field`. Production callers go through that one.
      integer, intent(in) :: nz, method
      real(wp), intent(in) :: h_old(nz), h_new(nz)
      real(wp), intent(inout) :: hTr_inout(nz)
      real(wp) :: c_old(NZ_STACK_MAX), c_new(NZ_STACK_MAX)
      real(wp) :: h_old_col(NZ_STACK_MAX), h_new_col(NZ_STACK_MAX)
      real(wp) :: hTr_col(NZ_STACK_MAX), hTr_src(NZ_STACK_MAX)
      integer :: k
      do k = 1, nz
         h_old_col(k) = h_old(k)
         h_new_col(k) = h_new(k)
         hTr_col(k) = hTr_inout(k)
      end do
      call rdb_vl_merge_content(nz, h_old_col, hTr_col)
      call rdb_vl_column_conc(nz, h_old_col, hTr_col, c_old)
      call remap_column(method, nz, h_old, h_new, c_old(1:nz), c_new(1:nz))
      do k = 1, nz
         hTr_src(k) = hTr_col(k)
         hTr_col(k) = c_new(k)*h_new(k)
      end do
      call remap_fold_filler_defect(nz, h_old_col, h_new_col, hTr_src, hTr_col)
      call rdb_vl_merge_content(nz, h_new_col, hTr_col)
      do k = 1, nz
         hTr_inout(k) = hTr_col(k)
      end do
   end subroutine ocean_remap_tracer_column