remap_layer_to_z Subroutine

public subroutine remap_layer_to_z(state_handle, z_out, layer_buf, output_buf, is_extensive)

Layer→fixed-z vertical remap, CONSERVATIVE (donor-cell overlap via remap_column, scheme diag_remap_method). is_extensive=.false. ⇒ INTENSIVE (thickness-weighted average of overlapping source layers); .true. ⇒ EXTENSIVE (thickness-integrated field — column integral redistributed across targets, Σ preserved when the z-grid spans H). z_out(:) = target INTERFACE depths (m, positive-down, shallow→deep, implicit 0 surface); output cell m spans [z_out(m-1), z_out(m)]. Thicknesses clipped to column total H = Σ h_layer over the LIVE layers (exact conservation; a vanished layer carries zero weight — see remap_layer_to_vcoord_impl); below-seafloor cells read 0. k=1 bed, k=nz surface. Public only for the unit-test suite.

Arguments

Type IntentOptional Attributes Name
class(*), intent(in) :: state_handle
real(kind=wp), intent(in) :: z_out(:)
real(kind=wp), intent(in) :: layer_buf(:,:,:)
real(kind=wp), intent(inout) :: output_buf(:,:,:)
logical, intent(in) :: is_extensive

Calls

proc~~remap_layer_to_z~~CallsGraph proc~remap_layer_to_z remap_layer_to_z proc~remap_layer_to_vcoord_impl remap_layer_to_vcoord_impl proc~remap_layer_to_z->proc~remap_layer_to_vcoord_impl local local proc~remap_layer_to_vcoord_impl->local proc~remap_column remap_column proc~remap_layer_to_vcoord_impl->proc~remap_column rdb_vl_is_live rdb_vl_is_live proc~remap_layer_to_vcoord_impl->rdb_vl_is_live 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 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

Source Code

   subroutine remap_layer_to_z(state_handle, z_out, layer_buf, output_buf, is_extensive)
      !! Layer→fixed-z vertical remap, CONSERVATIVE (donor-cell overlap via
      !! `remap_column`, scheme `diag_remap_method`).  `is_extensive=.false.`
      !! ⇒ INTENSIVE (thickness-weighted average of overlapping source layers);
      !! `.true.` ⇒ EXTENSIVE (thickness-integrated field — column integral
      !! redistributed across targets, Σ preserved when the z-grid spans H).
      !! `z_out(:)` = target INTERFACE depths (m, positive-down, shallow→deep,
      !! implicit 0 surface); output cell m spans `[z_out(m-1), z_out(m)]`.
      !! Thicknesses clipped to column total H = Σ h_layer over the LIVE
      !! layers (exact conservation; a vanished layer carries zero weight —
      !! see `remap_layer_to_vcoord_impl`); below-seafloor cells read 0.
      !! k=1 bed, k=nz surface.
      !! Public only for the unit-test suite.
      class(*), intent(in) :: state_handle
      real(wp), intent(in) :: z_out(:)
      real(wp), intent(in) :: layer_buf(:, :, :)
      real(wp), intent(inout) :: output_buf(:, :, :)
      logical, intent(in) :: is_extensive

      select type (state => state_handle)
      class is (ocean_state_t)
         call remap_layer_to_vcoord_impl(DIAG_VGRID_Z_FIXED, state%multilayer%h_layer, &
                                         z_out, layer_buf, output_buf, is_extensive, &
                                         diag_remap_method, diag_mask_vanished, &
                                         DIAG_MISSING_VALUE)
      end select
   end subroutine remap_layer_to_z