module C_FUNC #if defined(INCLUDE_CXX) INTERFACE SUBROUTINE get_surface_fluxes_esm(sfx, meteo, model_param, surface_param, numerics, constants, grid_size) BIND(C) use sfx_data USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_INT, C_PTR IMPLICIT NONE INTEGER(C_INT) :: grid_size type(C_PTR), value :: sfx type(C_PTR), value :: meteo type(sfx_esm_param) :: model_param type(sfx_surface_param) :: surface_param type(sfx_esm_numericsTypeC) :: numerics type(sfx_phys_constants) :: constants END SUBROUTINE get_surface_fluxes_esm SUBROUTINE get_surface_fluxes_sheba(sfx, meteo, model_param, surface_param, numerics, constants, grid_size) BIND(C) use sfx_data USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_INT, C_PTR IMPLICIT NONE INTEGER(C_INT) :: grid_size type(C_PTR), value :: sfx type(C_PTR), value :: meteo type(sfx_sheba_param) :: model_param type(sfx_surface_param) :: surface_param type(sfx_sheba_numericsTypeC) :: numerics type(sfx_phys_constants) :: constants END SUBROUTINE get_surface_fluxes_sheba END INTERFACE contains subroutine set_c_struct_sfx_surface_param_values(surface_param) use sfx_data use sfx_surface implicit none type (sfx_surface_param), intent(inout) :: surface_param surface_param%surface_ocean = surface_ocean surface_param%surface_land = surface_land surface_param%surface_lake = surface_lake surface_param%gamma_c = gamma_c surface_param%Re_visc_min = Re_visc_min surface_param%h_charnock = h_charnock surface_param%c1_charnock = c1_charnock surface_param%c2_charnock = c2_charnock surface_param%Re_rough_min = Re_rough_min surface_param%B1_rough = B1_rough surface_param%B2_rough = B2_rough surface_param%B3_rough = B3_rough surface_param%B4_rough = B4_rough surface_param%B_max_lake = B_max_lake surface_param%B_max_ocean = B_max_ocean surface_param%B_max_land = B_max_land end subroutine set_c_struct_sfx_surface_param_values subroutine set_c_struct_sfx_phys_constants_values(constants) use sfx_data use sfx_phys_const implicit none type (sfx_phys_constants), intent(inout) :: constants constants%Pr_m = Pr_m constants%g = g constants%nu_air = nu_air end subroutine set_c_struct_sfx_phys_constants_values #endif end module C_FUNC