cavity_law_is_implicit Function

private pure function cavity_law_is_implicit(law) result(is_implicit)

Does this law’s (gamma_t, gamma_s) depend on the interfacial buoyancy flux — and therefore on the melt rate it produces? Yung et al. (2025) p. 5833 states the consequence: “Since the transfer coefficients depend on L+, which in turn depends on melt rate via surface buoyancy forcing, iteration is required for convergence of the three-equation parameterisation solution.”

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: law

CAVITY_LAW_* code.

Return Value logical


Called by

proc~~cavity_law_is_implicit~~CalledByGraph proc~cavity_law_is_implicit cavity_law_is_implicit proc~cavity_solve_melt_f cavity_solve_melt_f proc~cavity_solve_melt_f->proc~cavity_law_is_implicit proc~cavity_melt_point_gamma_f cavity_melt_point_gamma_f proc~cavity_melt_point_gamma_f->proc~cavity_solve_melt_f proc~cavity_solve_melt cavity_solve_melt proc~cavity_solve_melt->proc~cavity_solve_melt_f proc~cavity_melt_columns_2d cavity_melt_columns_2d proc~cavity_melt_columns_2d->proc~cavity_melt_point_gamma_f proc~cavity_melt_point cavity_melt_point proc~cavity_melt_point->proc~cavity_solve_melt proc~cavity_melt_point_gamma cavity_melt_point_gamma proc~cavity_melt_point_gamma->proc~cavity_melt_point_gamma_f proc~cavity_melt_columns cavity_melt_columns proc~cavity_melt_columns->proc~cavity_melt_point proc~ocean_cavity_flux_step ocean_cavity_flux_step proc~ocean_cavity_flux_step->proc~cavity_melt_columns_2d proc~engine_step_finalize engine_step_finalize proc~engine_step_finalize->proc~ocean_cavity_flux_step

Source Code

   pure function cavity_law_is_implicit(law) result(is_implicit)
      !! Does this law's `(gamma_t, gamma_s)` depend on the interfacial
      !! buoyancy flux — and therefore on the melt rate it produces?  Yung
      !! et al. (2025) p. 5833 states the consequence: "Since the transfer
      !! coefficients depend on L+, which in turn depends on melt rate via
      !! surface buoyancy forcing, iteration is required for convergence
      !! of the three-equation parameterisation solution."
      !$acc routine seq
      integer, intent(in) :: law
         !! `CAVITY_LAW_*` code.
      logical :: is_implicit
      is_implicit = (law == CAVITY_LAW_HJ99) .or. (law == CAVITY_LAW_YUNG25)
   end function cavity_law_is_implicit