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