INCLUDE "ChemPlugin.f90" PROGRAM LinksGrid Use ChemPluginModule IMPLICIT NONE TYPE(ChemPlugin) :: cp_left, cp_right, cp_bottom, cp_top TYPE(ChemPlugin), dimension(:), allocatable :: cp TYPE(CpiLink) :: link0 INTEGER :: nx, ny, i, j, ij, error, num_links nx = 5 ny = 3 WRITE(*,fmt='("Link ChemPlugin instances into a", I2, " by", I2, " grid")') nx, ny WRITE(*,fmt='("")') cp_left = ChemPlugin() cp_right = ChemPlugin() cp_bottom = ChemPlugin() cp_top = ChemPlugin() ALLOCATE(cp(nx*ny)) DO i = 1, nx*ny cp(i) = ChemPlugin() END DO Do j = 1, ny Do i = 1, nx ij = i + (j - 1) * nx IF (i == 1) THEN link0 = cp(ij)%Link(cp_left) ELSE link0 = cp(ij)%Link(cp(ij-1)) END IF IF (j == 1) THEN link0 = cp(ij)%Link(cp_bottom) ELSE link0 = cp(ij)%Link(cp(ij-nx)) END IF IF (j == ny) THEN link0 = cp_top%Link(cp(ij)) END IF END DO link0 = cp_right%Link(cp(j*nx)) END DO num_links = cp_left%nLinks() WRITE(*,'("Left boundary is linked to", I2, " instances")') num_links num_links = cp_bottom%nLinks() WRITE(*,'("Bottom boundary is linked to", I2, " instances")') num_links DO i = 1, nx*ny num_links = cp(i)%nLinks() WRITE(*,'("Instance ", I2, " is linked to", I2, " instances")') i-1, num_Links END DO num_links = cp_top%nLinks() WRITE(*,'("Top boundary is linked to", I2, " instances")') num_links num_links = cp_right%nLinks() WRITE(*,'("Right boundary is linked to", I2, " instances")') num_links END PROGRAM LinksGrid