Repository: C2SM/icon4py
Pull request #707: add doc string on the combined stencils on velocity advection
Author: login: yiluchen1066
Created: 2025-04-03T08:29:31Z | Merged: 2025-04-25T14:35:56Z

Adding the doc string on the combined stencil on velocity advection: 

- compute_derived_horizontal_winds_and_ke_and_horizontal_advection_of_w_and_contravariant_correction
- compute_horizontal_advection_of_w
- interpolate_horizontal_kinetic_energy_to_cells_and_compute_contravariant_terms
- interpolate_horizontal_kinetic_energy_to_cells_and_compute_contravariant_corrected_w
- compute_advection_in_vertical_momentum_equation
- compute_advection_in_horizontal_momentum_equation

The updated documentation includes: 
- High-level descriptions of the computations
- Clarified input/output arguments to explain data flow

also a small cleanup: 

-remove the nrdmax by replacing it with end_index_of_damping_layer where it is used 



Diff:
diff --git a/model/atmosphere/diffusion/src/icon4py/model/atmosphere/diffusion/diffusion.py b/model/atmosphere/diffusion/src/icon4py/model/atmosphere/diffusion/diffusion.py
index 0d4dd24914..65a5fa6b12 100644
--- a/model/atmosphere/diffusion/src/icon4py/model/atmosphere/diffusion/diffusion.py
+++ b/model/atmosphere/diffusion/src/icon4py/model/atmosphere/diffusion/diffusion.py
@@ -454,7 +454,7 @@ def __init__(
 
         diffusion_utils._init_nabla2_factor_in_upper_damping_zone.with_backend(self._backend)(
             physical_heights=self._vertical_grid.interface_physical_height,
-            nrdmax=self._vertical_grid.end_index_of_damping_layer,
+            end_index_of_damping_layer=self._vertical_grid.end_index_of_damping_layer,
             nshift=0,
             heights_nrd_shift=self._vertical_grid.interface_physical_height.ndarray[
                 self._vertical_grid.end_index_of_damping_layer + 1
diff --git a/model/atmosphere/diffusion/src/icon4py/model/atmosphere/diffusion/diffusion_utils.py b/model/atmosphere/diffusion/src/icon4py/model/atmosphere/diffusion/diffusion_utils.py
index 4e2485dd29..96844de740 100644
--- a/model/atmosphere/diffusion/src/icon4py/model/atmosphere/diffusion/diffusion_utils.py
+++ b/model/atmosphere/diffusion/src/icon4py/model/atmosphere/diffusion/diffusion_utils.py
@@ -160,13 +160,13 @@ def init_diffusion_local_fields_for_regular_timestep(
 @gtx.field_operator
 def _init_nabla2_factor_in_upper_damping_zone(
     physical_heights: fa.KField[float],
-    nrdmax: gtx.int32,
+    end_index_of_damping_layer: gtx.int32,
     nshift: gtx.int32,
     heights_nrd_shift: float,
     heights_1: float,
 ) -> fa.KField[float]:
     height_sliced = concat_where(
-        ((1 + nshift) <= dims.KDim) & (dims.KDim < (nshift + nrdmax + 1)), physical_heights, 0.0
+        ((1 + nshift) <= dims.KDim) & (dims.KDim < (nshift + end_index_of_damping_layer + 1)), physical_heights, 0.0
     )
     diff_multfac_n2w = (
         1.0 / 12.0 * ((height_sliced - heights_nrd_shift) / (heights_1 - heights_nrd_shift)) ** 4
@@ -178,7 +178,7 @@ def _init_nabla2_factor_in_upper_damping_zone(
 def init_nabla2_factor_in_upper_damping_zone(
     physical_heights: fa.KField[float],
     diff_multfac_n2w: fa.KField[float],
-    nrdmax: gtx.int32,
+    end_index_of_damping_layer: gtx.int32,
     nshift: gtx.int32,
     heights_nrd_shift: float,
     heights_1: float,
@@ -193,16 +193,16 @@ def init_nabla2_factor_in_upper_damping_zone(
     Args
         physcial_heights: vector of physical heights [m] of the height levels
         k_field: field of k levels
-        nrdmax: index of the level where rayleigh damping starts
+        end_index_of_damping_layer: index of the level where rayleigh damping starts
         nshift: 0
-        heights_nrd_shift: physcial_heights at nrdmax + nshift + 1,
+        heights_nrd_shift: physcial_heights at end_index_of_damping_layer + nshift + 1,
         heights_1: physcial_heights at 1st level,
         vertical_start: vertical lower bound,
         vertical_end: vertical upper bound,
     """
     _init_nabla2_factor_in_upper_damping_zone(
         physical_heights=physical_heights,
-        nrdmax=nrdmax,
+        end_index_of_damping_layer=end_index_of_damping_layer,
         nshift=nshift,
         heights_nrd_shift=heights_nrd_shift,
         heights_1=heights_1,
diff --git a/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py b/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
index 75c663628c..d729e6a5fd 100644
--- a/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
+++ b/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
@@ -43,7 +43,7 @@ def _compute_advection_in_horizontal_momentum_equation(
     d_time: ta.wpfloat,
     levelmask: fa.KField[bool],
     nlev: gtx.int32,
-    nrdmax: gtx.int32,
+    end_index_of_damping_layer: gtx.int32,
 ) -> fa.EdgeKField[ta.vpfloat]:
     upward_vorticity_at_vertices_on_model_levels = _mo_math_divrot_rot_vertex_ri_dsl(vn, geofac_rot)
 
@@ -61,7 +61,7 @@ def _compute_advection_in_horizontal_momentum_equation(
     )
 
     normal_wind_advective_tendency = concat_where(
-        ((maximum(3, nrdmax - 2) - 1) <= dims.KDim) & (dims.KDim < (nlev - 4)),
+        ((maximum(3, end_index_of_damping_layer - 2) - 1) <= dims.KDim) & (dims.KDim < (nlev - 4)),
         _add_extra_diffusion_for_normal_wind_tendency_approaching_cfl(
             levelmask,
             c_lin_e,
@@ -106,13 +106,49 @@ def compute_advection_in_horizontal_momentum_equation(
     d_time: ta.wpfloat,
     levelmask: fa.KField[bool],
     nlev: gtx.int32,
-    nrdmax: gtx.int32,
+    end_index_of_damping_layer: gtx.int32,
     horizontal_start: gtx.int32,
     horizontal_end: gtx.int32,
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinetic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinetic energy at cell centers on model levels
+        - tangential_wind: tangential wind at model levels
+        - coriolis_frequency: coriolis frequency parameter
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vn_on_half_levels: normal wind on half levels
+        - geofac_rot: metric field for rotor computation
+        - coeff_gradekin: metrics field/coefficient for the gradient of kinematic energy
+        - c_lin_e: metrics field for linear interpolation from cells to edges
+        - ddqz_z_full_e: metrics field equal to vertical spacing
+        - area_edge: area associated with each edge
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - inv_primal_edge_length: inverse primal edge length
+        - geofac_grdiv: metrics field used to compute the gradient of a divergence (of vn)
+        - cfl_w_limit: CFL limit for vertical velocity
+        - scalfac_exdiff: scalar factor for external diffusion
+        - d_time: time step
+        - levelmask: mask for valid vertical levels
+        - nlev: number of (full/model) vertical levels
+        - end_index_of_damping_layer: vertical index where damping ends
+        - horizontal_start: start index in the horizontal domain
+        - horizontal_end: end index in the horizontal domain
+        - vertical_start: start index in the vertical domain
+        - vertical_end: end index in the vertical domain
+
+    Returns:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+
+    """
 
     _compute_advection_in_horizontal_momentum_equation(
         vn,
@@ -135,7 +171,7 @@ def compute_advection_in_horizontal_momentum_equation(
         d_time,
         levelmask,
         nlev,
-        nrdmax,
+        end_index_of_damping_layer,
         out=normal_wind_advective_tendency,
         domain={
             dims.EdgeDim: (horizontal_start, horizontal_end),
diff --git a/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_vertical_momentum_equation.py b/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_vertical_momentum_equation.py
index 44a4650dc2..794212fc9d 100644
--- a/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_vertical_momentum_equation.py
+++ b/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_vertical_momentum_equation.py
@@ -42,7 +42,7 @@ def _compute_advective_vertical_wind_tendency_and_apply_diffusion(
     cfl_w_limit: ta.vpfloat,
     dtime: ta.wpfloat,
     nlev: gtx.int32,
-    nrdmax: gtx.int32,
+    end_index_of_damping_layer: gtx.int32,
 ) -> fa.CellKField[ta.vpfloat]:
     # TODO(havogt): we should get rid of the cell_lower_bound and cell_upper_bound,
     # they are only to protect write to halo (if I understand correctly)
@@ -63,7 +63,7 @@ def _compute_advective_vertical_wind_tendency_and_apply_diffusion(
         vertical_wind_advective_tendency,
     )
     vertical_wind_advective_tendency = concat_where(
-        ((maximum(3, nrdmax - 2) - 1) <= dims.KDim) & (dims.KDim < (nlev - 3)),
+        ((maximum(3, end_index_of_damping_layer - 2) - 1) <= dims.KDim) & (dims.KDim < (nlev - 3)),
         _add_extra_diffusion_for_w_con_approaching_cfl(
             cfl_clipping,
             owner_mask,
@@ -102,7 +102,7 @@ def _compute_advection_in_vertical_momentum_equation(
     cfl_clipping: fa.CellKField[bool],
     owner_mask: fa.CellField[bool],
     nlev: gtx.int32,
-    nrdmax: gtx.int32,
+    end_index_of_damping_layer: gtx.int32,
 ) -> tuple[fa.CellKField[ta.vpfloat], fa.CellKField[ta.vpfloat]]:
     contravariant_corrected_w_at_cells_on_model_levels = (
         _interpolate_contravariant_vertical_velocity_to_full_levels(
@@ -127,7 +127,7 @@ def _compute_advection_in_vertical_momentum_equation(
             cfl_w_limit,
             dtime,
             nlev,
-            nrdmax,
+            end_index_of_damping_layer,
         )
         if not skip_compute_predictor_vertical_advection
         else vertical_wind_advective_tendency
@@ -156,13 +156,47 @@ def compute_advection_in_vertical_momentum_equation(
     cfl_clipping: fa.CellKField[bool],
     owner_mask: fa.CellField[bool],
     nlev: gtx.int32,
-    nrdmax: gtx.int32,
+    end_index_of_damping_layer: gtx.int32,
     horizontal_start: gtx.int32,
     horizontal_end: gtx.int32,
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_15_to_18."""
+    """
+    Formerly known as fused_velocity_advection_stencil_15_to_18.
+
+    This computes the vertical momentum advection in the vertical momentum equation
+
+    Args:
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vertical_wind_advective_tendency: vertical advection tendency of the vertical wind
+        - w: vertical wind at cell centers
+        - contravariant_corrected_w_at_cells_on_half_levels: contravariant-corrected vertical velocity at cells on half levels
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity at edges on half levels
+        - coeff1_dwdz: metrics field (first coefficient for vertical derivative of vertical wind)
+        - coeff2_dwdz: metrics field (second coefficient for vertical derivative of vertical wind)
+        - e_bln_c_s: interpolation field (edge-to-cell interpolation weights)
+        - ddqz_z_half: metrics field
+        - area: cell area
+        - geofac_n2s: interpolation field
+        - scalfac_exdiff: scalar factor for external diffusion
+        - cfl_w_limit: CFL limit for vertical velocity
+        - dtime: time step
+        - skip_compute_predictor_vertical_advection: logical flag to skip the vertical advection
+        - cfl_clipping: boolean field indicating CFL clipping applied per cell and level
+        - owner_mask: ownership mask for each cell
+        - nlev: number of (full/model) vertical levels
+        - end_index_of_damping_layer: vertical index where damping ends
+        - horizontal_start: start index in the horizontal dimension
+        - horizontal_end: end index in the horizontal dimension
+        - vertical_start: start index in the vertical dimension
+        - vertical_end: end index in the vertical dimension
+
+    Returns:
+        - contravariant_corrected_w_at_cells_on_model_levels
+        - vertical_wind_advective_tendency
+
+    """
 
     _compute_advection_in_vertical_momentum_equation(
         vertical_wind_advective_tendency,
@@ -182,7 +216,7 @@ def compute_advection_in_vertical_momentum_equation(
         cfl_clipping,
         owner_mask,
         nlev,
-        nrdmax,
+        end_index_of_damping_layer,
         out=(contravariant_corrected_w_at_cells_on_model_levels, vertical_wind_advective_tendency),
         domain={
             dims.CellDim: (horizontal_start, horizontal_end),
diff --git a/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_cell_diagnostics_for_velocity_advection.py b/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_cell_diagnostics_for_velocity_advection.py
index 6581ada426..4dbc19d5e9 100644
--- a/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_cell_diagnostics_for_velocity_advection.py
+++ b/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_cell_diagnostics_for_velocity_advection.py
@@ -98,7 +98,34 @@ def interpolate_horizontal_kinetic_energy_to_cells_and_compute_contravariant_ter
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_8_to_13_predictor."""
+    """
+    Formerly known as fused_velocity_advection_stencil_8_to_13_predictor.
+
+    This interpolates horizontal kinetic energy from edges to cells on models levels
+    and compute the contravariant correction term on half levels.
+    It also computes the vertical velocity with the contravariant correction term.
+
+    Args:
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinetic energy computed at cell centers of model levels
+        - contravariant_correction_at_cells_on_half_levels: contravariant metric correction at cells on half levels
+        - contravariant_corrected_w_at_cells_on_half_levels: contravariant-corrected vertical velocity at cells on half levels
+        - w: vertical wind at cell centers
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinetic energy computed at edge of model levels
+        - contravariant_correction_at_edges_on_model_levels: contravariant metric correction at edge of model levels
+        - e_bln_c_s: interpolation field (edge-to-cell interpolation weights factors)
+        - wgtfac_c: metrics field
+        - nflatlev: number of flat levels
+        - nlev: total number of vertical levels
+        - horizontal_start: start index in the horizontal direction
+        - horizontal_end: end index in the horizontal direction
+        - vertical_start: start index in the vertical direction
+        - vertical_end: end index in the vertical direction
+
+    Returns:
+        - horizontal_kinetic_energy_at_cells_on_model_levels
+        - contravariant_correction_at_cells_on_half_levels
+        - contravariant_corrected_w_at_cells_on_half_levels
+    """
 
     _interpolate_horizontal_kinetic_energy_to_cells_and_compute_contravariant_correction(
         horizontal_kinetic_energy_at_edges_on_model_levels,
@@ -145,7 +172,31 @@ def interpolate_horizontal_kinetic_energy_to_cells_and_compute_contravariant_cor
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_8_to_13_corrector."""
+    """
+    Formerly known as fused_velocity_advection_stencil_8_to_13_corrector.
+
+    This interpolates horizontal kinetic energy from edges to cells on model levels
+    The contravariant correction term has been computed at the end of predictor in solve nonhydro
+    It also computes the contravariant-corrected vertical velocity at cell centers on half levels
+
+    Args:
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinetic energy computed at cell centers of model levels
+        - contravariant_corrected_w_at_cells_on_half_levels: contravariant-corrected vertical velocity at cells on half levels
+        - w: vertical wind at cell centers
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinetic energy computed at edge of model levels
+        - contravariant_correction_at_cells_on_half_levels: contravariant metric correction at cells on half levels
+        - e_bln_c_s: interpolation field (edge-to-cell interpolation weights factors)
+        - nflatlev: number of flat levels
+        - nlev: total number of vertical levels
+        - horizontal_start: start index in the horizontal direction
+        - horizontal_end: end index in the horizontal direction
+        - vertical_start: start index in the vertical direction
+        - vertical_end: end index in the vertical direction
+
+    Returns:
+        - horizontal_kinetic_energy_at_cells_on_model_levels
+        - contravariant_corrected_w_at_cells_on_half_levels
+    """
 
     _interpolate_to_cell_center(
         horizontal_kinetic_energy_at_edges_on_model_levels,
diff --git a/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py b/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
index d953c086f6..c383ae8e96 100644
--- a/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
+++ b/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
@@ -167,7 +167,48 @@ def compute_derived_horizontal_winds_and_ke_and_horizontal_advection_of_w_and_co
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_1_to_7_predictor."""
+    """
+    Formerly known as fused_velocity_advection_stencil_1_to_7_predictor.
+
+    This computes the derived horizontal wind components, kinetic energy, horizontal advection of the vertical velocity,
+    and the contravariant correction.
+    It also extrapolates vertical velocity at the top level.
+
+    Agrs:
+        - tangential_wind: tangential wind at model levels
+        - tangential_wind_on_half_levels: tangential wind interpolated to half levels
+        - vn_on_half_levels: normal wind interpolated to half levels
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinetic energy computed at edge of model levels
+        - contravariant_correction_at_edges_on_model_levels: contravariant metric correction at edge of model levels
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity
+        - vn: normal wind at edges
+        - w: vertical wind at cell centers
+        - rbf_vec_coeff_e: interpolation field (RBF vector coefficient on edges)
+        - wgtfac_e: metrics field
+        - ddxn_z_full: metrics field (derivative of topography in the normal direction)
+        - ddxt_z_full: metrics field (derivative of topography in the tangential direction)
+        - wgtfacq_e: metrics field (weights for interpolation)
+        - c_intp: interpolation field
+        - inv_dual_edge_length: inverse dual edge length
+        - inv_primal_edge_length: inverse primal edge length
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - skip_compute_predictor_vertical_advection: logical flag to skip the vertical advection
+        - nflatlev: number of flat levels
+        - horizontal_start: start index in the horizontal direction
+        - horizontal_end: end index in the horizontal direction
+        - vertical_start: start index in the vertical direction
+        - vertical_end: end index in the vertical direction
+
+
+    Returns:
+        - tangential_wind
+        - tangential_wind_on_half_levels
+        - vn_on_half_levels
+        - horizontal_kinetic_energy_at_edges_on_model_levels
+        - contravariant_correction_at_edges_on_model_levels
+        - horizontal_advection_of_w_at_edges_on_half_levels
+    """
+
     _compute_derived_horizontal_winds_and_ke_and_horizontal_advection_of_w_and_contravariant_correction(
         tangential_wind_on_half_levels,
         contravariant_correction_at_edges_on_model_levels,
@@ -223,7 +264,29 @@ def compute_horizontal_advection_of_w(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_1_to_7_corrector."""
+    """
+    Formerly known as fused_velocity_advection_stencil_1_to_7_corrector.
+
+    This computes the horizontal advection of the vertical wind
+
+    Agrs:
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity
+        - w: vertical wind at cell centers
+        - tangential_wind_on_half_levels: tangential wind interpolated to half levels
+        - vn_on_half_levels: normal wind on half levels
+        - c_intp: interpolation field
+        - inv_dual_edge_length: inverse dual edge length
+        - inv_primal_edge_length: inverse primal edge length
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - horizontal_start: start index in the horizontal direction
+        - horizontal_end: end index in the horizontal direction
+        - vertical_start: start index in the vertical direction
+        - vertical_end: end index in the vertical direction
+
+
+    Returns:
+        - horizontal_advection_of_w_at_edges_on_half_levels
+    """
 
     _compute_horizontal_advection_of_w(
         w,
diff --git a/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/velocity_advection.py b/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/velocity_advection.py
index dafcea4a5c..12ed71a6ab 100644
--- a/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/velocity_advection.py
+++ b/model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/velocity_advection.py
@@ -262,7 +262,7 @@ def run_predictor_step(
             cfl_clipping=self.cfl_clipping,
             owner_mask=self.c_owner_mask,
             nlev=gtx.int32(self.grid.num_levels),
-            nrdmax=self.vertical_params.nrdmax,
+            end_index_of_damping_layer=self.vertical_params.end_index_of_damping_layer,
             horizontal_start=self._start_cell_lateral_boundary_level_4,
             horizontal_end=self._end_cell_halo,
             vertical_start=0,
@@ -297,7 +297,7 @@ def run_predictor_step(
             d_time=dtime,
             levelmask=levmask,  # TODO(havogt): can we get rid of the levelmask here?
             nlev=self.grid.num_levels,
-            nrdmax=self.vertical_params.nrdmax,
+            end_index_of_damping_layer=self.vertical_params.end_index_of_damping_layer,
             horizontal_start=self._start_edge_nudging_level_2,
             horizontal_end=self._end_edge_local,
             vertical_start=gtx.int32(0),
@@ -401,7 +401,7 @@ def run_corrector_step(
             cfl_clipping=self.cfl_clipping,
             owner_mask=self.c_owner_mask,
             nlev=gtx.int32(self.grid.num_levels),
-            nrdmax=self.vertical_params.nrdmax,
+            end_index_of_damping_layer=self.vertical_params.end_index_of_damping_layer,
             horizontal_start=self._start_cell_lateral_boundary_level_4,
             horizontal_end=self._end_cell_halo,
             vertical_start=0,
@@ -436,7 +436,7 @@ def run_corrector_step(
             d_time=dtime,
             levelmask=levmask,  # TODO(havogt): can we get rid of the levelmask here?
             nlev=self.grid.num_levels,
-            nrdmax=self.vertical_params.nrdmax,
+            end_index_of_damping_layer=self.vertical_params.end_index_of_damping_layer,
             horizontal_start=self._start_edge_nudging_level_2,
             horizontal_end=self._end_edge_local,
             vertical_start=gtx.int32(0),
diff --git a/model/atmosphere/dycore/tests/dycore_stencil_tests/test_compute_advection_in_horizontal_momentum_equation.py b/model/atmosphere/dycore/tests/dycore_stencil_tests/test_compute_advection_in_horizontal_momentum_equation.py
index f9ecd14b5c..63edee9be8 100644
--- a/model/atmosphere/dycore/tests/dycore_stencil_tests/test_compute_advection_in_horizontal_momentum_equation.py
+++ b/model/atmosphere/dycore/tests/dycore_stencil_tests/test_compute_advection_in_horizontal_momentum_equation.py
@@ -58,7 +58,7 @@ def reference(
         d_time: ta.wpfloat,
         levelmask: np.ndarray,
         nlev: int,
-        nrdmax: int,
+        end_index_of_damping_layer: int,
         **kwargs: Any,
     ) -> dict:
         normal_wind_advective_tendency_cp = normal_wind_advective_tendency.copy()
@@ -82,7 +82,9 @@ def reference(
             ddqz_z_full_e,
         )
 
-        condition = (np.maximum(3, nrdmax - 2) - 1 <= k) & (k < nlev - 4)
+
+        condition = (np.maximum(3, end_index_of_damping_layer - 2) - 1 <= k) & (k < nlev - 4)
+
         normal_wind_advective_tendency_extra_diffu = (
             add_extra_diffusion_for_normal_wind_tendency_approaching_cfl_numpy(
                 connectivities,
@@ -152,7 +154,7 @@ def input_data(self, grid: base.BaseGrid) -> dict[str, gtx.Field | state_utils.S
 
         nlev = grid.num_levels
 
-        nrdmax = 5
+        end_index_of_damping_layer = 5
         edge_domain = h_grid.domain(dims.EdgeDim)
         horizontal_start = grid.start_index(edge_domain(h_grid.Zone.NUDGING_LEVEL_2))
         horizontal_end = grid.end_index(edge_domain(h_grid.Zone.LOCAL))
@@ -179,7 +181,7 @@ def input_data(self, grid: base.BaseGrid) -> dict[str, gtx.Field | state_utils.S
             d_time=d_time,
             levelmask=levelmask,
             nlev=nlev,
-            nrdmax=nrdmax,
+            end_index_of_damping_layer=end_index_of_damping_layer,
             horizontal_start=horizontal_start,
             horizontal_end=horizontal_end,
             vertical_start=0,
diff --git a/model/atmosphere/dycore/tests/dycore_stencil_tests/test_compute_advection_in_vertical_momentum_equation.py b/model/atmosphere/dycore/tests/dycore_stencil_tests/test_compute_advection_in_vertical_momentum_equation.py
index 4b722f98b4..6836320565 100644
--- a/model/atmosphere/dycore/tests/dycore_stencil_tests/test_compute_advection_in_vertical_momentum_equation.py
+++ b/model/atmosphere/dycore/tests/dycore_stencil_tests/test_compute_advection_in_vertical_momentum_equation.py
@@ -96,7 +96,7 @@ def _compute_advective_vertical_wind_tendency_and_apply_diffusion(
     cfl_clipping: np.ndarray,
     owner_mask: np.ndarray,
     nlev: int,
-    nrdmax: int,
+    end_index_of_damping_layer: int,
 ) -> np.ndarray:
     k = np.arange(nlev)
 
@@ -120,7 +120,7 @@ def _compute_advective_vertical_wind_tendency_and_apply_diffusion(
         vertical_wind_advective_tendency,
     )
 
-    condition2 = (np.maximum(3, nrdmax - 2) - 1 <= k) & (k < nlev - 3)
+    condition2 = (np.maximum(3, end_index_of_damping_layer - 2) - 1 <= k) & (k < nlev - 3)
 
     vertical_wind_advective_tendency = np.where(
         condition2,
@@ -173,7 +173,7 @@ def reference(
         cfl_clipping: np.ndarray,
         owner_mask: np.ndarray,
         nlev: int,
-        nrdmax: int,
+        end_index_of_damping_layer: int,
         **kwargs: Any,
     ) -> dict:
         # We need to store the initial return field, because we only compute on a subdomain.
@@ -208,7 +208,7 @@ def reference(
                     cfl_clipping,
                     owner_mask,
                     nlev,
-                    nrdmax,
+                    end_index_of_damping_layer,
                 )
             )
 
@@ -263,7 +263,7 @@ def input_data(self, grid: base.BaseGrid) -> dict[str, gtx.Field | state_utils.S
         dtime = 2.0
 
         nlev = grid.num_levels
-        nrdmax = 5
+        end_index_of_damping_layer = 5
         skip_compute_predictor_vertical_advection = False
 
         cell_domain = h_grid.domain(dims.CellDim)
@@ -291,7 +291,7 @@ def input_data(self, grid: base.BaseGrid) -> dict[str, gtx.Field | state_utils.S
             cfl_clipping=cfl_clipping,
             owner_mask=owner_mask,
             nlev=nlev,
-            nrdmax=nrdmax,
+            end_index_of_damping_layer=end_index_of_damping_layer,
             horizontal_start=horizontal_start,
             horizontal_end=horizontal_end,
             vertical_start=vertical_start,
diff --git a/model/atmosphere/dycore/tests/dycore_tests/test_velocity_advection.py b/model/atmosphere/dycore/tests/dycore_tests/test_velocity_advection.py
index 7af74d7617..f217870e92 100644
--- a/model/atmosphere/dycore/tests/dycore_tests/test_velocity_advection.py
+++ b/model/atmosphere/dycore/tests/dycore_tests/test_velocity_advection.py
@@ -912,7 +912,8 @@ def test_compute_advection_in_vertical_momentum_equation(
     )
     ddt_w_adv_ref = savepoint_compute_advection_in_vertical_momentum_equation_exit.ddt_w_adv()
 
-    nrdmax = grid_savepoint.nrdmax()
+    end_index_of_damping_layer = grid_savepoint.nrdmax()
+
 
     dtime = 5.0
     cell_domain = h_grid.domain(dims.CellDim)
@@ -947,7 +948,7 @@ def test_compute_advection_in_vertical_momentum_equation(
         dtime=dtime,
         skip_compute_predictor_vertical_advection=skip_compute_predictor_vertical_advection,
         nlev=icon_grid.num_levels,
-        nrdmax=nrdmax,
+        end_index_of_damping_layer=end_index_of_damping_layer,
         horizontal_start=horizontal_start,
         horizontal_end=horizontal_end,
         vertical_start=vertical_start,
@@ -1038,7 +1039,8 @@ def test_compute_advection_in_horizontal_momentum_equation(
     end_edge_local = icon_grid.end_index(edge_domain(h_grid.Zone.LOCAL))
 
     d_time = savepoint_velocity_init.get_metadata("dtime").get("dtime")
-    nrdmax = grid_savepoint.nrdmax()
+    end_index_of_damping_layer = grid_savepoint.nrdmax()
+
 
     ddt_vn_apc_ref = savepoint_compute_advection_in_horizontal_momentum_equation_exit.ddt_vn_apc()
 
@@ -1069,7 +1071,7 @@ def test_compute_advection_in_horizontal_momentum_equation(
         scalfac_exdiff=scalfac_exdiff,
         d_time=d_time,
         nlev=icon_grid.num_levels,
-        nrdmax=nrdmax,
+        end_index_of_damping_layer=end_index_of_damping_layer,
         horizontal_start=start_edge_nudging_level_2,
         horizontal_end=end_edge_local,
         vertical_start=0,
diff --git a/model/common/src/icon4py/model/common/grid/vertical.py b/model/common/src/icon4py/model/common/grid/vertical.py
index b03dfd971b..94bc58e1ac 100644
--- a/model/common/src/icon4py/model/common/grid/vertical.py
+++ b/model/common/src/icon4py/model/common/grid/vertical.py
@@ -149,7 +149,7 @@ def __post_init__(self, vct_a, vct_b):
             self._determine_end_index_of_flat_layers(vct_a_array, self.config.flat_height),
         )
         log.info(f"computation of moist physics start on layer: {self.kstart_moist}")
-        log.info(f"end index of Rayleigh damping layer for w: {self.nrdmax} ")
+        log.info(f"end index of Rayleigh damping layer for w: {self.end_index_of_damping_layer} ")
 
     def __str__(self) -> str:
         vertical_params_properties = ["Model interface height properties:"]
@@ -213,14 +213,9 @@ def nflatlev(self) -> gtx.int32:
         """Vertical index for bottom most level at which coordinate surfaces are flat."""
         return gtx.int32(self.index(Domain(dims.KDim, Zone.FLAT)))
 
-    @functools.cached_property
-    def nrdmax(self) -> gtx.int32:
-        """Vertical index where damping starts."""
-        return self.end_index_of_damping_layer
-
     @functools.cached_property
     def end_index_of_damping_layer(self) -> gtx.int32:
-        """Vertical index where damping starts."""
+        """Vertical index where damping ends."""
         return self.index(Domain(dims.KDim, Zone.DAMPING))
 
     @property


Reviews:
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T13:20:13Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T13:20:33Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T13:21:51Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T13:23:33Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T13:25:42Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:32:27Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:33:22Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:34:37Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:35:03Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:36:00Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:37:49Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:39:15Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:39:33Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:41:48Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:41:57Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:43:18Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:44:30Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:46:21Z
user: login: jcanton
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T14:48:18Z
user: login: OngChia
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T16:25:39Z
user: login: yiluchen1066
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-07T14:33:17Z
user: login: OngChia
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T09:35:52Z
user: login: OngChia
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T09:38:06Z
user: login: OngChia
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T09:39:05Z
user: login: OngChia
body: Minor things. Everything else is good.
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-25T11:30:31Z
user: login: OngChia
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-25T11:44:49Z
user: login: jcanton
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-25T12:52:30Z

Review comments:
diff_hunk: @@ -134,7 +134,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinematic energy at edges on model levels
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinetic energy at edges on model levels
```
created_at: 2025-04-03T13:20:10Z
author_association: CONTRIBUTOR
diff_hunk: @@ -134,7 +134,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinematic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinematic energy at cell centers on model levels
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinetic energy at cell centers on model levels
```
created_at: 2025-04-03T13:20:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -134,7 +134,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinematic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinematic energy at cell centers on model levels
+        - tangential_wind: tangential wind at model levels
+        - coriolis_frequency: coriolis frequency parameter
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vn_on_half_levels: normal wind on half levels
+        - geofac_rot: interpolation field
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - geofac_rot: metrics field for rotor computations
```
created_at: 2025-04-03T13:21:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -134,7 +134,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinematic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinematic energy at cell centers on model levels
+        - tangential_wind: tangential wind at model levels
+        - coriolis_frequency: coriolis frequency parameter
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vn_on_half_levels: normal wind on half levels
+        - geofac_rot: interpolation field
+        - coeff_gradekin: metrics field/coefficient for the gradient of kinematic energy
+        - c_lin_e: interpolation field/linear interpolation coefficients from cells to edges
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - c_lin_e: metrics field for linear interpolation from cells to edges
```
created_at: 2025-04-03T13:23:32Z
author_association: CONTRIBUTOR
diff_hunk: @@ -134,7 +134,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinematic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinematic energy at cell centers on model levels
+        - tangential_wind: tangential wind at model levels
+        - coriolis_frequency: coriolis frequency parameter
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vn_on_half_levels: normal wind on half levels
+        - geofac_rot: interpolation field
+        - coeff_gradekin: metrics field/coefficient for the gradient of kinematic energy
+        - c_lin_e: interpolation field/linear interpolation coefficients from cells to edges
+        - ddqz_z_full_e: metrics field
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - ddqz_z_full_e: metrics field equal to vertical spacing
```
created_at: 2025-04-03T13:25:41Z
author_association: CONTRIBUTOR
diff_hunk: @@ -134,7 +134,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinematic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinematic energy at cell centers on model levels
+        - tangential_wind: tangential wind at model levels
+        - coriolis_frequency: coriolis frequency parameter
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vn_on_half_levels: normal wind on half levels
+        - geofac_rot: interpolation field
+        - coeff_gradekin: metrics field/coefficient for the gradient of kinematic energy
+        - c_lin_e: interpolation field/linear interpolation coefficients from cells to edges
+        - ddqz_z_full_e: metrics field
+        - area_edge: area associated with each edge
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - inv_primal_edge_length: inverse primal edge length
+        - geofac_grdiv: interpolation field =
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - geofac_grdiv: metrics field used to compute the gradient of a divergence (of vn)
```
created_at: 2025-04-03T14:32:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -134,7 +134,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinematic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinematic energy at cell centers on model levels
+        - tangential_wind: tangential wind at model levels
+        - coriolis_frequency: coriolis frequency parameter
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vn_on_half_levels: normal wind on half levels
+        - geofac_rot: interpolation field
+        - coeff_gradekin: metrics field/coefficient for the gradient of kinematic energy
+        - c_lin_e: interpolation field/linear interpolation coefficients from cells to edges
+        - ddqz_z_full_e: metrics field
+        - area_edge: area associated with each edge
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - inv_primal_edge_length: inverse primal edge length
+        - geofac_grdiv: interpolation field =
+        - cfl_w_limit: CFL limit for vertical velocity
+        - scalfac_exdiff: scalar factor for external diffusion
+        - d_time: time step
+        - levelmask: mask for valid vertical levels
+        - nlev: total number of vertical levels
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - nlev: number of (full/model) vertical levels
```
created_at: 2025-04-03T14:33:20Z
author_association: CONTRIBUTOR
diff_hunk: @@ -134,7 +134,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinematic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinematic energy at cell centers on model levels
+        - tangential_wind: tangential wind at model levels
+        - coriolis_frequency: coriolis frequency parameter
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vn_on_half_levels: normal wind on half levels
+        - geofac_rot: interpolation field
+        - coeff_gradekin: metrics field/coefficient for the gradient of kinematic energy
+        - c_lin_e: interpolation field/linear interpolation coefficients from cells to edges
+        - ddqz_z_full_e: metrics field
+        - area_edge: area associated with each edge
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - inv_primal_edge_length: inverse primal edge length
+        - geofac_grdiv: interpolation field =
+        - cfl_w_limit: CFL limit for vertical velocity
+        - scalfac_exdiff: scalar factor for external diffusion
+        - d_time: time step
+        - levelmask: mask for valid vertical levels
+        - nlev: total number of vertical levels
+        - nrdmax: vertical index where damping ends.
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - nrdmax: vertical index where damping ends
```
created_at: 2025-04-03T14:34:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -134,7 +134,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinematic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinematic energy at cell centers on model levels
+        - tangential_wind: tangential wind at model levels
+        - coriolis_frequency: coriolis frequency parameter
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vn_on_half_levels: normal wind on half levels
+        - geofac_rot: interpolation field
+        - coeff_gradekin: metrics field/coefficient for the gradient of kinematic energy
+        - c_lin_e: interpolation field/linear interpolation coefficients from cells to edges
+        - ddqz_z_full_e: metrics field
+        - area_edge: area associated with each edge
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - inv_primal_edge_length: inverse primal edge length
+        - geofac_grdiv: interpolation field =
+        - cfl_w_limit: CFL limit for vertical velocity
+        - scalfac_exdiff: scalar factor for external diffusion
+        - d_time: time step
+        - levelmask: mask for valid vertical levels
+        - nlev: total number of vertical levels
+        - nrdmax: vertical index where damping ends.
+        - start_vertex_lateral_boundary_level_2: start index of lateral boundary level 2 on vertex
+        - end_vertex_halo: ebd index of halo on vertex
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - end_vertex_halo: end index of halo on vertex
```
created_at: 2025-04-03T14:35:01Z
author_association: CONTRIBUTOR
diff_hunk: @@ -134,7 +134,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinematic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinematic energy at cell centers on model levels
+        - tangential_wind: tangential wind at model levels
+        - coriolis_frequency: coriolis frequency parameter
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vn_on_half_levels: normal wind on half levels
+        - geofac_rot: interpolation field
+        - coeff_gradekin: metrics field/coefficient for the gradient of kinematic energy
+        - c_lin_e: interpolation field/linear interpolation coefficients from cells to edges
+        - ddqz_z_full_e: metrics field
+        - area_edge: area associated with each edge
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - inv_primal_edge_length: inverse primal edge length
+        - geofac_grdiv: interpolation field =
+        - cfl_w_limit: CFL limit for vertical velocity
+        - scalfac_exdiff: scalar factor for external diffusion
+        - d_time: time step
+        - levelmask: mask for valid vertical levels
+        - nlev: total number of vertical levels
+        - nrdmax: vertical index where damping ends.
+        - start_vertex_lateral_boundary_level_2: start index of lateral boundary level 2 on vertex
+        - end_vertex_halo: ebd index of halo on vertex
+        - start_edge_nudging_level_2: start index of nudging level 2 on edge
+        - end_edge_local: end index of local on edge
+        - horizontal_start: start index in the horizontal domain
+        - horizontal_end: end index in the horizontal domain
+        - vertical_start: start index in the vertical domain
+        - vertical_end: end index in the vertical domain
+
+    Returns:
+        - normal_wind_advective_tendency
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind

```
created_at: 2025-04-03T14:35:59Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,7 +196,47 @@ def compute_advection_in_vertical_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_15_to_18."""
+    """
+    Formerly known as fused_velocity_advection_stencil_15_to_18.
+
+    This computes the vertical momentum advection in the vertical momentum equation
+
+    Args:
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vertical_wind_advective_tendency: vertical advection tendency
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_vertical_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - vertical_wind_advective_tendency: vertical advection tendency of the vertical wind
```
same as you did for
`        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind`
created_at: 2025-04-03T14:37:48Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,7 +196,47 @@ def compute_advection_in_vertical_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_15_to_18."""
+    """
+    Formerly known as fused_velocity_advection_stencil_15_to_18.
+
+    This computes the vertical momentum advection in the vertical momentum equation
+
+    Args:
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vertical_wind_advective_tendency: vertical advection tendency
+        - w: vertical wind at cell centers
+        - contravariant_corrected_w_at_cells_on_half_levels: contravariant-corrected vertical velocity at cells on half levels
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity at edges on half levels
+        - coeff1_dwdz: metrics field (first coefficient for vertical derivative of 'w')
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_vertical_momentum_equation.py
user: login: jcanton
body: ```suggestion
        - coeff1_dwdz: metrics field (first coefficient for vertical derivative of vertical wind)
```
(I prefer `w`, but you called it "vertical wind" everywhere else)
created_at: 2025-04-03T14:39:14Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,7 +196,47 @@ def compute_advection_in_vertical_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_15_to_18."""
+    """
+    Formerly known as fused_velocity_advection_stencil_15_to_18.
+
+    This computes the vertical momentum advection in the vertical momentum equation
+
+    Args:
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vertical_wind_advective_tendency: vertical advection tendency
+        - w: vertical wind at cell centers
+        - contravariant_corrected_w_at_cells_on_half_levels: contravariant-corrected vertical velocity at cells on half levels
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity at edges on half levels
+        - coeff1_dwdz: metrics field (first coefficient for vertical derivative of 'w')
+        - coeff2_dwdz: metrics field (second coefficient for vertical derivative of 'w')
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_vertical_momentum_equation.py
user: login: jcanton
body: 
```suggestion
        - coeff2_dwdz: metrics field (second coefficient for vertical derivative of vertical wind)
```
created_at: 2025-04-03T14:39:32Z
author_association: CONTRIBUTOR
diff_hunk: @@ -98,7 +98,34 @@ def interpolate_horizontal_kinetic_energy_to_cells_and_compute_contravariant_ter
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_8_to_13_predictor."""
+    """
+    Formerly known as fused_velocity_advection_stencil_8_to_13_predictor.
+
+    This interpolates horizontal kinetic energy from edges to cells on models levels
+    and compute the contravariant correction term on half levels
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_cell_diagnostics_for_velocity_advection.py
user: login: jcanton
body: 
```suggestion
    and compute the contravariant correction term on half levels.
```
created_at: 2025-04-03T14:41:46Z
author_association: CONTRIBUTOR
diff_hunk: @@ -98,7 +98,34 @@ def interpolate_horizontal_kinetic_energy_to_cells_and_compute_contravariant_ter
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_8_to_13_predictor."""
+    """
+    Formerly known as fused_velocity_advection_stencil_8_to_13_predictor.
+
+    This interpolates horizontal kinetic energy from edges to cells on models levels
+    and compute the contravariant correction term on half levels
+    It also computes the vertical velocity with the contravariant correction term
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_cell_diagnostics_for_velocity_advection.py
user: login: jcanton
body: 
```suggestion
    It also computes the vertical velocity with the contravariant correction term.
```
created_at: 2025-04-03T14:41:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -300,7 +300,45 @@ def compute_derived_horizontal_winds_and_ke_and_horizontal_advection_of_w_and_co
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_1_to_7_predictor."""
+    """
+    Formerly known as fused_velocity_advection_stencil_1_to_7_predictor.
+
+    This computes the derived horizontal wind components, kinetic energy, horizontal advection of the vertical velocity,
+    and the contravariant correction.
+    It also extrapolates vertical velocity at the top level
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
user: login: jcanton
body: 
```suggestion
    It also extrapolates vertical velocity at the top level.
```
created_at: 2025-04-03T14:43:17Z
author_association: CONTRIBUTOR
diff_hunk: @@ -300,7 +300,45 @@ def compute_derived_horizontal_winds_and_ke_and_horizontal_advection_of_w_and_co
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_1_to_7_predictor."""
+    """
+    Formerly known as fused_velocity_advection_stencil_1_to_7_predictor.
+
+    This computes the derived horizontal wind components, kinetic energy, horizontal advection of the vertical velocity,
+    and the contravariant correction.
+    It also extrapolates vertical velocity at the top level
+
+    Agrs:
+        - tangential_wind: tangential wind at model levels
+        - tangential_wind_on_half_levels: tangential wind interpolated to half levels
+        - vn_on_half_levels: normal wind on half levels
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
user: login: jcanton
body: 
```suggestion
        - vn_on_half_levels: normal wind interpolated to half levels
```
created_at: 2025-04-03T14:44:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -300,7 +300,45 @@ def compute_derived_horizontal_winds_and_ke_and_horizontal_advection_of_w_and_co
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_1_to_7_predictor."""
+    """
+    Formerly known as fused_velocity_advection_stencil_1_to_7_predictor.
+
+    This computes the derived horizontal wind components, kinetic energy, horizontal advection of the vertical velocity,
+    and the contravariant correction.
+    It also extrapolates vertical velocity at the top level
+
+    Agrs:
+        - tangential_wind: tangential wind at model levels
+        - tangential_wind_on_half_levels: tangential wind interpolated to half levels
+        - vn_on_half_levels: normal wind on half levels
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinetic energy computed at edge of model levels
+        - contravariant_correction_at_edges_on_model_levels: contravariant metric correction at edge of model levels
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity
+        - vn: normal wind at edges
+        - w: vertical wind at cell centers
+        - rbf_vec_coeff_e: interpolation field (RBF vector coefficient on edges)
+        - wgtfac_e: metrics field
+        - ddxn_z_full: metrics field (derivative in the x-direction)
+        - ddxt_z_full: metrics field (derivative in the tangential direction)
+        - c_intp: interpolation field
+        - inv_dual_edge_length: inverse dual edge length
+        - inv_primal_edge_length: inverse primal edge length
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - skip_compute_predictor_vertical_advection: logical flag to skip the vertical advection
+        - nflatlev: number of flat levels
+        - nlev: total number of vertical levels
+        - lateral_boundary_7: start index of lateral boundary level 7 on edges
+        - halo_1: end index of halo on edges
+
+    Returns:
+        -  tangential_wind
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
user: login: jcanton
body: 
```suggestion
        - tangential_wind
```
created_at: 2025-04-03T14:46:19Z
author_association: CONTRIBUTOR
path: model/common/src/icon4py/model/common/grid/vertical.py
user: login: jcanton
body: why is that stuff duplicated?
```
    @functools.cached_property
    def nrdmax(self) -> gtx.int32:
        """Vertical index where damping ends."""
        return self.end_index_of_damping_layer

    @functools.cached_property
    def end_index_of_damping_layer(self) -> gtx.int32:
        """Vertical index where damping ends."""
        return self.index(Domain(dims.KDim, Zone.DAMPING))
```
created_at: 2025-04-03T14:48:16Z
author_association: CONTRIBUTOR
path: model/common/src/icon4py/model/common/grid/vertical.py
user: login: OngChia
body: There was a time when we decided we kept both, one with the old ICON name and the other one with the new easier-to-understand name. 
Now it is a good time we remove `nrdmax` in my opinion because we have decided to rename variables. And add that this new name corresponds to `nrdmax`.
created_at: 2025-04-03T16:25:39Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,7 +196,47 @@ def compute_advection_in_vertical_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_15_to_18."""
+    """
+    Formerly known as fused_velocity_advection_stencil_15_to_18.
+
+    This computes the vertical momentum advection in the vertical momentum equation
+
+    Args:
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vertical_wind_advective_tendency: vertical advection tendency
+        - w: vertical wind at cell centers
+        - contravariant_corrected_w_at_cells_on_half_levels: contravariant-corrected vertical velocity at cells on half levels
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity at edges on half levels
+        - coeff1_dwdz: metrics field (first coefficient for vertical derivative of 'w')
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_vertical_momentum_equation.py
user: login: yiluchen1066
body: yeah, now I am thinking maybe `w` is more straight forward
created_at: 2025-04-07T14:33:17Z
author_association: CONTRIBUTOR
diff_hunk: @@ -223,7 +261,28 @@ def compute_horizontal_advection_of_w(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_1_to_7_corrector."""
+    """
+    Formerly known as fused_velocity_advection_stencil_1_to_7_corrector.
+
+    This computes the horizontal advection of the vertical wind
+
+    Agrs:
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity
+        - w: vertical wind at cell centers
+        - tangential_wind_on_half_levels: tangential wind interpolated to half levels
+        - vn_on_half_levels: normal wind on half levels
+        - c_intp: interpolation field
+        - inv_dual_edge_length: inverse dual edge length
+        - inv_primal_edge_length: inverse primal edge length
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - lateral_boundary_7: start index of lateral boundary level 7 on edges
+        - halo_1: end index of halo on edges
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
user: login: OngChia
body: Removed
created_at: 2025-04-08T09:31:59Z
author_association: CONTRIBUTOR
diff_hunk: @@ -223,7 +261,28 @@ def compute_horizontal_advection_of_w(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_1_to_7_corrector."""
+    """
+    Formerly known as fused_velocity_advection_stencil_1_to_7_corrector.
+
+    This computes the horizontal advection of the vertical wind
+
+    Agrs:
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity
+        - w: vertical wind at cell centers
+        - tangential_wind_on_half_levels: tangential wind interpolated to half levels
+        - vn_on_half_levels: normal wind on half levels
+        - c_intp: interpolation field
+        - inv_dual_edge_length: inverse dual edge length
+        - inv_primal_edge_length: inverse primal edge length
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - lateral_boundary_7: start index of lateral boundary level 7 on edges
+        - halo_1: end index of halo on edges
+        - start_vertex_lateral_boundary_level_2: start index of lateral boundary level 2 on vertex
+        - end_vertex_halo: end index of halo on vertex
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
user: login: OngChia
body: Removed.
created_at: 2025-04-08T09:32:18Z
author_association: CONTRIBUTOR
diff_hunk: @@ -162,7 +162,47 @@ def compute_advection_in_vertical_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_15_to_18."""
+    """
+    Formerly known as fused_velocity_advection_stencil_15_to_18.
+
+    This computes the vertical momentum advection in the vertical momentum equation
+
+    Args:
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vertical_wind_advective_tendency: vertical advection tendency of the vertical wind
+        - w: vertical wind at cell centers
+        - contravariant_corrected_w_at_cells_on_half_levels: contravariant-corrected vertical velocity at cells on half levels
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity at edges on half levels
+        - coeff1_dwdz: metrics field (first coefficient for vertical derivative of vertical wind)
+        - coeff2_dwdz: metrics field (second coefficient for vertical derivative of vertical wind)
+        - e_bln_c_s: interpolation field (edge-to-cell interpolation weights)
+        - ddqz_z_half: metrics field
+        - area: cell area
+        - geofac_n2s: interpolation field
+        - scalfac_exdiff: scalar factor for external diffusion
+        - cfl_w_limit: CFL limit for vertical velocity
+        - dtime: time step
+        - skip_compute_predictor_vertical_advection: logical flag to skip the vertical advection
+        - levelmask: mask for valid vertical levels
+        - cfl_clipping: boolean field indicating CFL clipping applied per cell and level
+        - owner_mask: ownership mask for each cell
+        - cell: cell indices
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_vertical_momentum_equation.py
user: login: OngChia
body: Some input fields have been deleted since https://github.com/C2SM/icon4py/pull/699 is merged. Could you check again and remove those unnecessary fields in the docstring. Thanks.
created_at: 2025-04-08T09:35:44Z
author_association: CONTRIBUTOR
diff_hunk: @@ -167,7 +167,45 @@ def compute_derived_horizontal_winds_and_ke_and_horizontal_advection_of_w_and_co
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_1_to_7_predictor."""
+    """
+    Formerly known as fused_velocity_advection_stencil_1_to_7_predictor.
+
+    This computes the derived horizontal wind components, kinetic energy, horizontal advection of the vertical velocity,
+    and the contravariant correction.
+    It also extrapolates vertical velocity at the top level.
+
+    Agrs:
+        - tangential_wind: tangential wind at model levels
+        - tangential_wind_on_half_levels: tangential wind interpolated to half levels
+        - vn_on_half_levels: normal wind interpolated to half levels
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinetic energy computed at edge of model levels
+        - contravariant_correction_at_edges_on_model_levels: contravariant metric correction at edge of model levels
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity
+        - vn: normal wind at edges
+        - w: vertical wind at cell centers
+        - rbf_vec_coeff_e: interpolation field (RBF vector coefficient on edges)
+        - wgtfac_e: metrics field
+        - ddxn_z_full: metrics field (derivative in the x-direction)
+        - ddxt_z_full: metrics field (derivative in the tangential direction)
+        - c_intp: interpolation field
+        - inv_dual_edge_length: inverse dual edge length
+        - inv_primal_edge_length: inverse primal edge length
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - skip_compute_predictor_vertical_advection: logical flag to skip the vertical advection
+        - nflatlev: number of flat levels
+        - nlev: total number of vertical levels
+        - lateral_boundary_7: start index of lateral boundary level 7 on edges
+        - halo_1: end index of halo on edges
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
user: login: OngChia
body: Removed.
created_at: 2025-04-08T09:38:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -112,7 +112,47 @@ def compute_advection_in_horizontal_momentum_equation(
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_19_to_20."""
+    """
+    Formerly known as fused_velocity_advection_stencil_19_to_20.
+
+    This computes the horizontal advection in the horizontal momentum equation
+
+    Args:
+        - normal_wind_advective_tendency: horizontal advection tendency of the normal wind
+        - vn: normal wind at edges
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinetic energy at edges on model levels
+        - horizontal_kinetic_energy_at_cells_on_model_levels: horizontal kinetic energy at cell centers on model levels
+        - tangential_wind: tangential wind at model levels
+        - coriolis_frequency: coriolis frequency parameter
+        - contravariant_corrected_w_at_cells_on_model_levels: contravariant-corrected vertical velocity at model levels
+        - vn_on_half_levels: normal wind on half levels
+        - geofac_rot: metric field for rotor computation
+        - coeff_gradekin: metrics field/coefficient for the gradient of kinematic energy
+        - c_lin_e: metrics field for linear interpolation from cells to edges
+        - ddqz_z_full_e: metrics field equal to vertical spacing
+        - area_edge: area associated with each edge
+        - tangent_orientation: orientation of the edge with respect to the grid
+        - inv_primal_edge_length: inverse primal edge length
+        - geofac_grdiv: metrics field used to compute the gradient of a divergence (of vn)
+        - cfl_w_limit: CFL limit for vertical velocity
+        - scalfac_exdiff: scalar factor for external diffusion
+        - d_time: time step
+        - levelmask: mask for valid vertical levels
+        - nlev: number of (full/model) vertical levels
+        - nrdmax: vertical index where damping ends
+        - start_vertex_lateral_boundary_level_2: start index of lateral boundary level 2 on vertex
+        - end_vertex_halo: end index of halo on vertex
+        - start_edge_nudging_level_2: start index of nudging level 2 on edge
+        - end_edge_local: end index of local on edge
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_advection_in_horizontal_momentum_equation.py
user: login: OngChia
body: Removed.
created_at: 2025-04-08T09:39:05Z
author_association: CONTRIBUTOR
diff_hunk: @@ -215,12 +215,12 @@ def nflatlev(self) -> gtx.int32:
 
     @functools.cached_property
     def nrdmax(self) -> gtx.int32:
path: model/common/src/icon4py/model/common/grid/vertical.py
user: login: OngChia
body: This can be removed because it is not used anywhere now, right?
created_at: 2025-04-25T11:24:47Z
author_association: CONTRIBUTOR
diff_hunk: @@ -167,7 +167,48 @@ def compute_derived_horizontal_winds_and_ke_and_horizontal_advection_of_w_and_co
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_1_to_7_predictor."""
+    """
+    Formerly known as fused_velocity_advection_stencil_1_to_7_predictor.
+
+    This computes the derived horizontal wind components, kinetic energy, horizontal advection of the vertical velocity,
+    and the contravariant correction.
+    It also extrapolates vertical velocity at the top level.
+
+    Agrs:
+        - tangential_wind: tangential wind at model levels
+        - tangential_wind_on_half_levels: tangential wind interpolated to half levels
+        - vn_on_half_levels: normal wind interpolated to half levels
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinetic energy computed at edge of model levels
+        - contravariant_correction_at_edges_on_model_levels: contravariant metric correction at edge of model levels
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity
+        - vn: normal wind at edges
+        - w: vertical wind at cell centers
+        - rbf_vec_coeff_e: interpolation field (RBF vector coefficient on edges)
+        - wgtfac_e: metrics field
+        - ddxn_z_full: metrics field (derivative in the x-direction)
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
user: login: OngChia
body: `derivative of topography in the normal direction`
created_at: 2025-04-25T11:27:07Z
author_association: CONTRIBUTOR
diff_hunk: @@ -167,7 +167,48 @@ def compute_derived_horizontal_winds_and_ke_and_horizontal_advection_of_w_and_co
     vertical_start: gtx.int32,
     vertical_end: gtx.int32,
 ):
-    """Formerly known as fused_velocity_advection_stencil_1_to_7_predictor."""
+    """
+    Formerly known as fused_velocity_advection_stencil_1_to_7_predictor.
+
+    This computes the derived horizontal wind components, kinetic energy, horizontal advection of the vertical velocity,
+    and the contravariant correction.
+    It also extrapolates vertical velocity at the top level.
+
+    Agrs:
+        - tangential_wind: tangential wind at model levels
+        - tangential_wind_on_half_levels: tangential wind interpolated to half levels
+        - vn_on_half_levels: normal wind interpolated to half levels
+        - horizontal_kinetic_energy_at_edges_on_model_levels: horizontal kinetic energy computed at edge of model levels
+        - contravariant_correction_at_edges_on_model_levels: contravariant metric correction at edge of model levels
+        - horizontal_advection_of_w_at_edges_on_half_levels: horizontal advection for vertical velocity
+        - vn: normal wind at edges
+        - w: vertical wind at cell centers
+        - rbf_vec_coeff_e: interpolation field (RBF vector coefficient on edges)
+        - wgtfac_e: metrics field
+        - ddxn_z_full: metrics field (derivative in the x-direction)
+        - ddxt_z_full: metrics field (derivative in the tangential direction)
path: model/atmosphere/dycore/src/icon4py/model/atmosphere/dycore/stencils/compute_edge_diagnostics_for_velocity_advection.py
user: login: OngChia
body: `derivative of topography in the tangential direction`
created_at: 2025-04-25T11:29:52Z
author_association: CONTRIBUTOR
diff_hunk: @@ -178,7 +178,7 @@ def _init_nabla2_factor_in_upper_damping_zone(
 def init_nabla2_factor_in_upper_damping_zone(
     physical_heights: fa.KField[float],
     diff_multfac_n2w: fa.KField[float],
-    nrdmax: gtx.int32,
+    end_index_of_damping_layer: gtx.int32,
path: model/atmosphere/diffusion/src/icon4py/model/atmosphere/diffusion/diffusion_utils.py
user: login: OngChia
body: nrdmax in this file can also be changed to the new name.
created_at: 2025-04-25T11:44:47Z
author_association: CONTRIBUTOR

PR comments:
user: login: nfarabullini
created_at: 2025-04-03T13:11:02Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: jcanton
created_at: 2025-04-03T14:50:24Z
body: mostly looks good to me, but I'm looking forward to when we will finally make this properly automated with a dict or something so you don't have to re-write or copy/paste the same description in multiple places with the risk of different descriptions :-)
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-07T14:54:18Z
body: > mostly looks good to me, but I'm looking forward to when we will finally make this properly automated with a dict or something so you don't have to re-write or copy/paste the same description in multiple places with the risk of different descriptions :-)

> Thanks for the review and suggestions! I have resolved and pushed them. Yeah, that would be amazing that we could have automatic generated dic not even in the whole ICON4py
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-07T14:55:15Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-08T08:44:27Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-10T13:37:50Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-10T15:24:16Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-11T07:42:45Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-14T07:57:23Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-15T09:06:57Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-15T09:48:05Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-22T14:15:52Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-22T14:18:34Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-22T14:55:17Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-24T12:10:38Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-25T09:07:13Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-25T11:46:45Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: yiluchen1066
created_at: 2025-04-25T11:56:25Z
body: cscs-ci run default
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-04-25T13:10:27Z
body: <!-- add-pr-comment:add-pr-comment -->

**Mandatory Tests**

Please make sure you run these tests via comment before you merge!

* `cscs-ci run default`
* `launch jenkins spack`

**Optional Tests**

To run benchmarks you can use:

* `cscs-ci run benchmark-bencher`

To run tests and benchmarks with the DaCe backend you can use:

* `cscs-ci run dace`

In case your change might affect downstream [icon-exclaim](https://github.com/C2SM/icon-exclaim), please consider running

* `launch jenkins icon`

For more detailed information please look at [CI in the EXCLAIM universe](https://github.com/C2SM/icon-exclaim/wiki).
author_association: NONE
user: login: yiluchen1066
created_at: 2025-04-25T13:11:06Z
body: cscs-ci run default
author_association: CONTRIBUTOR