Some models (e.g., UFS) provide data in a 'blocked' format where segments of a task's field data are enclosed in a derived data type (DDT). The entirety of the task's data is incorporated in an array of these DDTs.
capgen needs to be able to correctly create the host cap interfaces, depending on the phase:
init, timestep_init, timestep_final, or final:
horizontal_dimension is the total number of columns on the task
- On entry, create a flattened version of each field with
horizontal_dimension columns.
- On exit, copy the flattened data back to the DDT array for
intent(inout) and intent(out) fields.
run:
- For each thread, pass the field array from one element of the DDT array
horizontal_loop_begin is typically 1 and horizontal_loop_end is typically the number of field columns in that array element
Some models (e.g., UFS) provide data in a 'blocked' format where segments of a task's field data are enclosed in a derived data type (DDT). The entirety of the task's data is incorporated in an array of these DDTs.
capgen needs to be able to correctly create the host cap interfaces, depending on the phase:
init,timestep_init,timestep_final, orfinal:horizontal_dimensionis the total number of columns on the taskhorizontal_dimensioncolumns.intent(inout)andintent(out)fields.run:horizontal_loop_beginis typically1andhorizontal_loop_endis typically the number of field columns in that array element