PROGRAM DEMO ! Initial team : 16 images. Algorithm design is a 4 by 4 grid. ! Desire 4 teams, for the upper left (UL), upper right (UR), ! lower left (LL), lower right (LR) USE,INTRINSIC :: ISO_FORTRAN_ENV, ONLY: TEAM_TYPE TYPE (TEAM_TYPE) :: T INTEGER, PARAMETER :: UL=11, UR=22, LL=33, LR=44 REAL :: A(10,10)[4,*] INTEGER :: MYPE, TEAMNUM, NEWPE TYPE TRANS_T INTEGER :: NEW_TEAM (16), NEW_INDEX (16) END TYPE TYPE (TRANS_T) :: TRANS TRANS = TRANS_T ([UL, UL, LL, LL, UL, UL, LL, LL, UR, UR, LR, LR, UR, UR, LR, LR], & [1, 2, 1, 2, 3, 4, 3, 4, 1, 2, 1, 2, 3, 4, 3, 4]) MYPE = THIS_IMAGE () FORM TEAM (TRANS%NEW_TEAM(MYPE), T, NEW_INDEX=TRANS%NEW_INDEX(MYPE)) A = 3.14 CHANGE TEAM (T, B[2,*] => A) ! Inside change team, image pattern for B is a 2 by 2 grid. B (5, 5) = B (1, 1)[2, 1] ! Outside the team addressing: NEWPE = THIS_IMAGE () SELECT CASE (TEAM_NUMBER ()) CASE (UL) IF (NEWPE==3) THEN ! Right column of UL gets left column of UR. B (:, 10) = B (:, 1)[1, 1, TEAM_NUMBER=UR] ELSE IF (NEWPE==4) THEN B (:, 10) = B (:, 1)[2, 1, TEAM_NUMBER=UR] END IF CASE (LL) ! Similar to complete column exchange across middle of the original grid. !. . . END SELECT END TEAM END PROGRAM DEMO