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.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Source Code
subroutine pack_and_send_int2D(vm,bufsize,recvPets,rootPet,buffer,&outbuffer,dims)type(ESMF_VM)::vminteger::bufsize(:)integer::recvPetsinteger::rootPetinteger::buffer(:,:)integer::outbuffer(:,:)integer::dims(:)integer::xdim,startinteger::lbnd(2),ubnd(2)integer::i,j,k,iiinteger,pointer::sendbuf(:)integer::localrc! fill my own pointer firstlbnd=lbound(outbuffer)ubnd=ubound(outbuffer)xdim=ubnd(1)-lbnd(1)+1bufsize(2)=ubnd(2)-lbnd(2)+1outbuffer=buffer(1:xdim,1:bufsize(2))if(recvPets>1)then allocate(sendbuf(dims(1)*bufsize(2)))start=xdimdo k=1,recvPets-1if(k>1)then if(dims(k)/=dims(k-1))then deallocate(sendbuf)allocate(sendbuf(dims(k)*bufsize(2)))endif endifii=1do j=1,bufsize(2)do i=start+1,start+dims(k)sendbuf(ii)=buffer(i,j)ii=ii+1enddo enddo call ESMF_VMSend(vm,sendbuf,dims(k)*bufsize(2),rootPet+k,rc=localrc)start=start+dims(k)enddo deallocate(sendbuf)endifend subroutine pack_and_send_int2D