---
# System prepended metadata

title: Untitled

---

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)