3 use size_m
, only : nid, nelt
4 use input, only : ifflow, ifmvbd, ifheat, iftmsh, npscal
6 use tstep, only : ifield
10 integer :: mfield, nfldt, idum, n8, ie, inid, mtype, inelt, nn, nm
11 integer,
external :: iglmin, iglmax
13 if(nid == 0)
write(6,
'(/,A)')
' mapping elements to processors'
21 IF (ifheat) nfldt = 2 + npscal
26 WRITE(6,1000)
np,nelgt
27 1000
FORMAT(2x,
'ABORT: Too many processors (',i8 &
28 ,
') for to few elements (',i8,
').' &
29 ,/,2x,
'ABORTING IN MAPELPR.')
35 DO 1200 ifield=mfield,nfldt
36 IF (iftmsh(ifield))
THEN
45 if (
np > 2050 .OR. nelgt > 40000) ifverbm= .false.
51 write(6 ,1310) node-1,(
lglel(ie),ie=1,n8)
52 if (nelt > 8)
write(6 ,1315) (
lglel(ie),ie=9,nelt)
55 call
csend(mtype,idum,4,inid,0)
56 call
crecv(mtype,inelt,4)
62 1310
FORMAT(
' RANK',i6,
' IEG',8i8)
63 1315
FORMAT(
' ',6x,
' ',8i8)
66 call
crecv(mtype,idum,4)
67 call
csend(mtype,nelt,4,0,0)
87 if(nid == 0)
write(6,*)
'element load imbalance: ',nm-nn,nn,nm
90 write(6,*)
'done :: mapping elements to processors'
subroutine set_proc_map()
Compute element to processor distribution according to (weighted) physical distribution in an attempt...
subroutine crecv(mtype, buf, lenm)
integer function lglel(iel)
subroutine csend(mtype, buf, len, jnid, jpid)