Fortran 2018 introduced teams to allow the programmer to assign different tasks to groups of images. For example, if you’re computing a weather simulation on 16 images, you could assign them different roles (figure 12.1).

Figure 12.1 A weather model workflow, with parallel images distributed in different teams and each box with a number in it representing one image
In this specific example, the images are distributed in the following setup:
- One image queries a remote server and downloads satellite data when available.
- Another is in charge of monitoring the progress of the simulation and logging appropriate information to a text file.
- Two images are responsible for writing simulation output files to disk.
- The remaining 12 images are churning away with the heavy task of simulation, without getting distracted by other chores.
Let’s apply a subset of this pattern to the tsunami simulator we’ve been developing.
Grouping images into teams with common tasks