.. _interface_ICON: ICON ==== The call to the TKE in ICON is in ``mo_ocean_physics`` module and it is passing several derived data types:: CALL calc_tke(patch_3d, ocean_state, params_oce, atmos_fluxes, fu10, concsum) In order to have a TKE library external to the ICON code, the derived data types need to be expanded, so the ``calc_tke_impl`` subroutine represents an interface to the TKE library on the ICON side:: SUBROUTINE calc_tke_impl(patch_3d, ocean_state, params_oce, atmos_fluxes, fu10, concsum) TYPE(t_patch_3d ),TARGET, INTENT(in) :: patch_3d TYPE(t_hydro_ocean_state), TARGET, INTENT(IN) :: ocean_state TYPE(t_atmos_fluxes), INTENT(IN) :: atmos_fluxes TYPE(t_ho_params), INTENT(INOUT) :: params_oce REAL(wp), TARGET, INTENT(IN) :: fu10(:,:) ! t_atmos_for_ocean%fu10 REAL(wp), TARGET, INTENT(IN) :: concsum(:,:) !< sea ice concentration LOGICAL, INTENT(IN), OPTIONAL :: use_acc CALL TKE_Calc_f(patch_3d%p_patch_1d(1)%depth_CellInterface, patch_3d%p_patch_1d(1)%prism_center_dist_c, & patch_3d%p_patch_1d(1)%inv_prism_center_dist_c, patch_3d%p_patch_1d(1)%prism_thick_c, & patch_3d%p_patch_1d(1)%dolic_c, patch_3d%p_patch_1d(1)%dolic_e, & patch_3d%p_patch_1d(1)%zlev_i, patch_3d%wet_c, & ocean_state%p_prog(nold(1))%tracer, ocean_state%p_prog(nold(1))%stretch_c, & ocean_state%p_prog(nold(1))%eta_c, ocean_state%p_diag%p_vn, & params_oce%cvmix_params%tke, params_oce%cvmix_params%tke_plc, & params_oce%cvmix_params%hlc, params_oce%cvmix_params%wlc, params_oce%cvmix_params%u_stokes, & params_oce%a_veloc_v, params_oce%a_tracer_v, params_oce%cvmix_params%iwe_Tdis, & params_oce%cvmix_params%cvmix_dummy_1, params_oce%cvmix_params%cvmix_dummy_2, & params_oce%cvmix_params%cvmix_dummy_3, params_oce%cvmix_params%tke_Tbpr, & params_oce%cvmix_params%tke_Tspr, params_oce%cvmix_params%tke_Tdif, params_oce%cvmix_params%tke_Tdis, & params_oce%cvmix_params%tke_Twin, params_oce%cvmix_params%tke_Tiwf, params_oce%cvmix_params%tke_Tbck, & params_oce%cvmix_params%tke_Ttot, params_oce%cvmix_params%tke_Lmix, params_oce%cvmix_params%tke_Pr, & atmos_fluxes%stress_xw, atmos_fluxes%stress_yw, fu10, concsum, & patch_3d%p_patch_2d(1)%edges%cell_idx, patch_3d%p_patch_2d(1)%edges%cell_blk, & patch_3d%p_patch_2d(1)%edges%in_domain%block_size, & patch_3d%p_patch_2d(1)%edges%in_domain%start_block, & patch_3d%p_patch_2d(1)%edges%in_domain%end_block, & patch_3d%p_patch_2d(1)%edges%in_domain%start_index, & patch_3d%p_patch_2d(1)%edges%in_domain%end_index, & patch_3d%p_patch_2d(1)%cells%All%block_size, & patch_3d%p_patch_2d(1)%cells%All%start_block, & patch_3d%p_patch_2d(1)%cells%All%end_block, & patch_3d%p_patch_2d(1)%cells%All%start_index, & patch_3d%p_patch_2d(1)%cells%All%end_index, & n_zlev, nproma, patch_3d%p_patch_2d(1)%alloc_cell_blocks, & vert_mix_type, vmix_idemix_tke, vert_cor_type, & dtime, OceanReferenceDensity, grav, l_lc, clc, ReferencePressureIndbars, pi) END SUBROUTINE calc_tke_impl