Nodes of different colours represent the following:
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
subroutine lb_recvuse mod_global_parametersuse mod_amr_solution_node,only:alloc_nodeuse mod_comm_lib,only:mpistop! alloc_node also re-derives the analytic extras (for ffhd, the frozen! field) through fill_nwextra_device, which is what lets the transfer below! carry only 1:nwgc rather than 1:nw.call alloc_node(recv_igrid)! Record the block; exchange_migrated_blocks posts them all once the walk! is over, one message per peer. The key is the index this block will! occupy here, which the sender knows too.irecv=irecv+1n_lb_rcv=n_lb_rcv+1if(n_lb_rcv>size(lb_rcv_igrid))then call mpistop('load_balance: more arrivals than max_blocks')end iflb_rcv_igrid(n_lb_rcv)=recv_igridlb_rcv_src(n_lb_rcv)=send_ipelb_rcv_key(n_lb_rcv)=recv_igridif(stagger_grid)thenitag=recv_igrid+max_blockscall mpi_irecv_wrapper(ps(recv_igrid)%ws,1,type_block_io_stg,send_ipe,itag,&icomm,recvrequest_stg(irecv),ierrmpi)end if end subroutine lb_recv