Modularization code and ICON-C Var Collection ICON-C design : fields+meta_data ex: data_c%t data_c%t%meta_data%units --------------- case 1: ICON-C `call microphys(data_cin,data_cout,data_c_scalar)` **definition** ``` subroutine microphys(data_cin,data_cout,data_c_scalar) type(var_collection) :: data_cin, data_cout,data_c_scalar) ``` Variant A: ``` init t=get_from_collection("t") run t=t+2 ``` or Variant 2 `t=data_cin%t+2 ` The later one requires the var_collection in the user code --------------- case2a: EXCLAIM - with simple collection Collection_simple : only fields data_c_simple%t `call microphys(data_c_simplein,data_c_simpleout,data_c_scalarin)` **definition** ``` microphysics(data_c_simplein,data_c_simpleout,data_c_scalarin) microphysics(data_c_simplein,data_c_simpleout,data_c_scalarin) type(collection_simple) :: data_c_simplein,data_c_simpleout t=get_from_collection(handler) t=t+2 ``` --------------- case2b: EXCLAIM - with no collection, long list of args `call microphys(t,qc,param1,param2,...)` **definition** ``` microphysics(t,qc,param1,param2,...) real :: t(:,:,:) t=t+2 ``` --------------- Python micrpohy_fortran_interface(data_cin) data_c_simplein=extract_simple(data_cin) microphys(data_c_simplein)