def METHOD_NAME(
    self,
    subdomains: list[pp.Grid],
    accumulation: pp.ad.Operator,
    surface_term: pp.ad.Operator,
    source: pp.ad.Operator,
    dim: int,
) -> pp.ad.Operator:
    """Balance equation that combines an accumulation and a surface term.
    The balance equation is given by
    .. math::
        d_t(accumulation) + div(surface_term) - source = 0.
    Parameters:
        subdomains: List of subdomains where the balance equation is defined.
        accumulation: Operator for the cell-wise accumulation term, integrated over
            the cells of the subdomains.
        surface_term: Operator for the surface term (e.g. flux, stress), integrated
            over the faces of the subdomains.
        source: Operator for the source term, integrated over the cells of the
            subdomains.
        dim: Spatial dimension of the balance equation.
    Returns:
        Operator for the balance equation.
    """
    dt_operator = pp.ad.time_derivatives.dt
    dt = self.ad_time_step
    div = pp.ad.Divergence(subdomains, dim=dim)
    return dt_operator(accumulation, dt) + div @ surface_term - source