28 xs_loc, ys_loc, zs_loc, nsdof, sys_label, &
29 x_system_lst, y_system_lst, z_system_lst, &
30 mpi_id, mpi_comm, mpi_np)
38 integer*4 :: nn_loc, nsdof, cs_nnz_loc
39 integer*4 :: mpi_np, mpi_id, mpi_comm, mpi_ierr
40 integer*4 :: i, j, max_nsdof_per_node
41 integer*4,
dimension(0:cs_nnz_loc) :: cs_loc
42 integer*4,
dimension(nn_loc) :: node_counter_loc
43 integer*4,
dimension(nsdof) :: node_counter_sdof_dum
44 integer*4,
dimension(nsdof) :: node_sys_loc, sys_label, nearestnode_globnum, nearestnode_locnum
45 integer*4,
dimension(nsdof*mpi_np) :: node_sys_glo
46 integer*4,
dimension(nn_loc) :: local_node_num
50 real*8,
dimension(nn_loc) :: xs_loc, ys_loc, zs_loc
52 real*8,
dimension(nsdof) :: dist_system_loc
61 node_sys_loc(i), dist_system_loc(i))
62 node_sys_loc(i) = local_node_num(node_sys_loc(i))
65 call mpi_barrier(mpi_comm, mpi_ierr)
67 call mpi_allgather(dist_system_loc, nsdof, speed_double,
dist_system_glo, nsdof, speed_double, mpi_comm, mpi_ierr)
68 call mpi_allgather(node_sys_loc, nsdof, speed_integer, node_sys_glo, nsdof, speed_integer, mpi_comm, mpi_ierr)
73 call mpi_barrier(mpi_comm, mpi_ierr)
76 node_counter_sdof_dum = 0
78 nearestnode_globnum(i) = node_sys_glo(node_sys_loc(i))
82 if (nearestnode_locnum(i).ne.0)
then
83 node_counter_sdof_dum(i) = 1;
84 node_counter_loc(nearestnode_locnum(i)) = node_counter_loc(nearestnode_locnum(i)) + 1
90 call mpi_barrier(mpi_comm, mpi_ierr)
91 call mpi_allreduce(node_counter_sdof_dum,
node_counter_sdof, nsdof, speed_integer, mpi_sum, mpi_comm, mpi_ierr)
93 max_nsdof_per_node = maxval(node_counter_loc)
99 nearestnode_globnum(i) = node_sys_glo(node_sys_loc(i))
103 if (nearestnode_locnum(i).ne.0)
then
subroutine get_nearest_node(n, xs, ys, zs, xt, yt, zt, nt, dist_min)
Computes the nearest node with respet to (xt,yt,zt).
subroutine make_system_position_lglnodes(nn_loc, local_node_num, cs_nnz_loc, cs_loc, xs_loc, ys_loc, zs_loc, nsdof, sys_label, x_system_lst, y_system_lst, z_system_lst, mpi_id, mpi_comm, mpi_np)
Reads oscillator position from SYS.input, and finds to which local-LGL node it should be applied.