44 type(mpi_comm) :: cart_comm
50 real(8) :: vertices(3,2)
52 integer :: rank, n_ranks
53 real(8),
dimension(:,:),
allocatable :: new_vertices
60 call mpi_comm_rank(mpi_comm_world,rank,error)
61 call mpi_comm_size(mpi_comm_world,n_ranks,error)
66 call mpi_dims_create(n_ranks,3,dims, error)
67 call mpi_cart_create(mpi_comm_world, 3, dims, period, .true., cart_comm, error)
70 length = 1.0d0 / real(dims,8)
73 call mpi_cart_coords(cart_comm, rank, 3, coords, error)
74 vertices(:,1) = real(coords,8) * length
75 vertices(:,2) = real(coords+1,8) * length
79 write(*,
"(a,i7,2(a,3es14.7))")
"rank: ", rank,
" old vertices: ", vertices(:,1),
", ", vertices(:,2)
80 call mpi_barrier(cart_comm, error)
82 call mpi_barrier(cart_comm, error)
87 call lb%set_proc_tag(rank)
88 call lb%set_work(real( product(coords,1)*64,8))
89 call lb%set_vertices(vertices)
92 call lb%set_communicator(cart_comm)
99 call lb%get_vertices_alloc(new_vertices)
103 write(*,
"(2(a,i7),2(a,3es14.7))")
"rank: ", rank,
" ",
size(new_vertices,2),
" new vertices: ", new_vertices(:,1), &
104 ", ", new_vertices(:,2)
105 call mpi_barrier(cart_comm, error)
107 call mpi_barrier(cart_comm, error)
110 deallocate(new_vertices)
112 call mpi_finalize(error);
The function API for ALL.
integer(c_int), parameter, public all_staggered
The object oriented API is this object. It contains all relevant functions.