15 & BUFR, LBUFR, LBUFR_BYTES,
16 & IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS,
17 & N, IW, LIW, A, LA, SLAVEF, PROCNODE_STEPS, DAD,
18 & PTRIST, PTRAST, STEP, PIMASTER, PAMASTER,
20 & FPERE, FLAG, IFLAG, IERROR, COMM,
27 INTEGER LBUFR, LBUFR_BYTES
28 INTEGER KEEP(500), BUFR( LBUFR )
31 INTEGER(8) :: LA, IPTRLU, LRLU, LRLUS
32 INTEGER IWPOS, IWPOSCB
36 INTEGER,
INTENT(IN) :: SLAVEF
37 INTEGER,
INTENT(IN) :: PROCNODE_STEPS(KEEP(28)),
38INTEGER(8) :: PTRAST (KEEP(28))
39 INTEGER(8) :: PAMASTER(KEEP(28))
40 INTEGER PTRIST( KEEP(28) )
41 INTEGER STEP(N), PIMASTER(KEEP(28))
44 INTEGER NSTK_S( KEEP(28) ), ITLOC( N + KEEP(253) )
45 REAL :: RHS_MUMPS(KEEP(255))
46 INTEGER IFLAG, IERROR, COMM
47 INTEGER POSITION, FINODE, FLCONT, LREQ
49 INTEGER(8) :: IPOS_NODE, ISHIFT_PACKET
51 INTEGER NBROWS_ALREADY_SENT, NBROWS_PACKET
52 include
'mumps_headers.h'
54 REAL,
POINTER,
DIMENSION(:) :: SON_A
55 INTEGER(8) :: DYN_SIZE
59 & finode, 1, mpi_integer,
62 & fpere, 1, mpi_integer,
65 & flcont, 1, mpi_integer,
68 & nbrows_already_sent, 1, mpi_integer,
71 & nbrows_packet, 1, mpi_integer,
73 packed_cb = (flcont.LT.0)
76 lreqcb = (int(flcont,8) * int(flcont+1,8)) / 2_8
80 IF (nbrows_already_sent == 0)
THEN
81 lreq = 2 * flcont + 6 + keep(ixsz)
83 & myid,n, keep,keep8, dkeep, iw, liw, a, la,
84 & lrlu, iptrlu,iwpos,iwposcb, slavef, procnode_steps, dad,
85 & ptrist,ptrast,step, pimaster, pamaster,
86 & lreq, lreqcb, finode,
87 & comp, lrlus, keep8(67), iflag, ierror
89 IF ( iflag .LT. 0 )
RETURN
90 pimaster(step( finode )) = iwposcb + 1
91 pamaster(step( finode )) = iptrlu + 1_8
92 IF (packed_cb) iw(iwposcb + 1 + xxs ) = s_cb1comp
94 & iw(iwposcb + 1+keep(ixsz)), lreq-keep(ixsz),
95 & mpi_integer, comm, ierr)
98 ishift_packet = int(nbrows_already_sent,8) *
99 & int(nbrows_already_sent+1,8) / 2_8
100 size_packet = (nbrows_packet * (nbrows_packet+1))/2 +
101 & nbrows_already_sent * nbrows_packet
103 ishift_packet = int(nbrows_already_sent,8) * int(flcont,8)
104 size_packet = nbrows_packet * flcont
106 IF (nbrows_packet.NE.0)
THEN
107 CALL mumps_geti8(dyn_size, iw(pimaster(step(finode))+xxd))
108 IF (dyn_size .GT. 0_8)
THEN
113 & son_a(ipos_node + ishift_packet),
114 & size_packet, mpi_real, comm, ierr)
116 ipos_node = pamaster(step(finode))
118 & a(ipos_node + ishift_packet),
119 & size_packet, mpi_real, comm, ierr)
122 IF (nbrows_already_sent+nbrows_packet == flcont)
THEN
123 nstk_s(step(fpere)) = nstk_s(step(fpere)) -
124 IF ( nstk_s(step(fpere)).EQ.0 )
THEN
subroutine smumps_alloc_cb(inplace, min_space_in_place, ssarbr, process_bande, myid, n, keep, keep8, dkeep, iw, liw, a, la, lrlu, iptrlu, iwpos, iwposcb, slavef, procnode_steps, dad, ptrist, ptrast, step, pimaster, pamaster, lreq, lreqcb, node_arg, state_arg, set_header, comp, lrlus, lrlusm, iflag, ierror)
subroutine smumps_process_node(myid, keep, keep8, dkeep, bufr, lbufr, lbufr_bytes, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, slavef, procnode_steps, dad, ptrist, ptrast, step, pimaster, pamaster, nstk_s, comp, fpere, flag, iflag, ierror, comm, itloc, rhs_mumps)