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)