1052 IMPLICIT NONE
1053 INTEGER NBROWS_ALREADY_SENT
1054 INTEGER, INTENT (in) :: KEEP253_LOC, NVSCHUR
1055 INTEGER, INTENT (in) :: SON_NIV
1056 INTEGER, INTENT (in), OPTIONAL :: NPIV_CHECK
1057 INTEGER IPERE, ISON, NBROW, MYID
1058 INTEGER PDEST, ISLAVE, COMM, IERR
1059 INTEGER PDEST_MASTER, NASS_PERE, NSLAVES_PERE,
1060 & NFRONT_PERE, LMAP
1061 INTEGER MAPROW( LMAP ), PERM( max(1, NBROW ))
1062 INTEGER IW_CBSON( * )
1063 COMPLEX(kind=8) A_CBSON( : )
1064 INTEGER(8) :: LA_CBSON
1065 LOGICAL DESC_IN_LU, PACKED_CB
1066 INTEGER KEEP(500), N , SLAVEF
1067 INTEGER(8) KEEP8(150)
1068 INTEGER STEP(N),
1069 & ISTEP_TO_INIV2(KEEP(71)),
1070 & TAB_POS_IN_PERE(SLAVEF+2,max(1,KEEP(56)))
1071 include 'mpif.h'
1072 include 'mumps_tags.h'
1073 INTEGER :: IERR_MPI
1074 INTEGER NFS4FATHER,SIZE3,PS1,NCA,LROW1
1075 INTEGER(8) :: ASIZE
1076 LOGICAL COMPUTE_MAX
1077 DOUBLE PRECISION, POINTER, DIMENSION(:) :: M_ARRAY
1078 INTEGER NBROWS_PACKET
1079 INTEGER MAX_ROW_LENGTH
1080 INTEGER LROW, NELIM
1081 INTEGER(8) :: ITMP8
1082 INTEGER NPIV, NFRONT, HS
1083 INTEGER SIZE_PACK, SIZE0, SIZE1, SIZE2, POSITION,I
1084 INTEGER SIZE_INTEGERS, B, SIZE_REALS, TMPSIZE, ONEorTWO, SIZE_AV
1085 INTEGER NBINT, L
1086 INTEGER(8) :: APOS, SHIFTCB_SON, LDA_SON8
1087 INTEGER IPOS_IN_SLAVE
1088 INTEGER STATE_SON
1089 INTEGER INDICE_PERE, NROW, IPOS, IREQ, NOSLA
1090 INTEGER IONE, J, THIS_ROW_LENGTH
1091 INTEGER SIZE_DESC_BANDE, DESC_BANDE_BYTES
1092 LOGICAL RECV_BUF_SMALLER_THAN_SEND
1093 LOGICAL NOT_ENOUGH_SPACE
1094 INTEGER PDEST2(1)
1095 LOGICAL CB_IS_LR
1096 TYPE(LRB_TYPE), POINTER :: CB_LRB(:,:)
1097 INTEGER, POINTER, DIMENSION(:) :: BEGS_BLR_ROW, BEGS_BLR_COL,
1098 & BEGS_BLR_STA
1099 INTEGER :: NB_ROW_SHIFT, NB_COL_SHIFT, NASS_SHIFT, PANEL2SEND,
1100 & CURRENT_PANEL_SIZE, NB_BLR_ROWS, NB_BLR_COLS,
1101 & CB_IS_LR_INT, NCOL_SHIFT, NROW_SHIFT,
1102 & NBROWS_PACKET_2PACK,
1103 & PANEL_BEG_OFFSET
1104 INTEGER :: NPIV_LR
1105 parameter( ione=1 )
1106 include 'mumps_headers.h'
1107 DOUBLE PRECISION ZERO
1108 parameter(zero = 0.0d0)
1109 cb_is_lr = (iw_cbson(1+xxlr).EQ.1
1110 & .OR. iw_cbson(1+xxlr).EQ.3)
1111 IF (cb_is_lr) THEN
1112 cb_is_lr_int = 1
1113 ELSE
1114 cb_is_lr_int = 0
1115 ENDIF
1116 compute_max = (keep(219) .NE. 0) .AND.
1117 & (keep(50) .EQ. 2) .AND.
1118 & (pdest.EQ.pdest_master)
1119 IF (nbrows_already_sent == 0) THEN
1120 IF (compute_max) THEN
1121 CALL zmumps_buf_max_array_minsize(nfs4father,ierr)
1122 IF (ierr .NE. 0) THEN
1123 ierr = -4
1124 RETURN
1125 ENDIF
1126 ENDIF
1127 ENDIF
1128 pdest2(1) = pdest
1129 ierr = 0
1130 lrow = iw_cbson( 1 + keep(ixsz))
1131 nelim = iw_cbson( 2 + keep(ixsz))
1132 npiv = iw_cbson( 4 + keep(ixsz))
1133 IF ( npiv .LT. 0 ) THEN
1134 npiv = 0
1135 END IF
1136 nrow = iw_cbson( 3 + keep(ixsz))
1137 nfront = lrow + npiv
1138 hs = 6 + iw_cbson( 6 + keep(ixsz)) + keep(ixsz)
1139 IF (cb_is_lr) THEN
1141 IF (son_niv.EQ.1) THEN
1143 & begs_blr_row)
1145 & begs_blr_col)
1146 nb_blr_rows = size(begs_blr_row) - 1
1148 & nb_col_shift)
1149 nb_row_shift = nb_col_shift
1150 nass_shift = begs_blr_row(nb_row_shift+1)-1
1151 npiv_lr = begs_blr_col(nb_col_shift+1)-1
1152 ELSE
1153 npiv_lr=npiv
1155 & begs_blr_sta)
1156 nb_blr_rows = size(begs_blr_sta) - 2
1157 begs_blr_row => begs_blr_sta(2:nb_blr_rows+2)
1159 & begs_blr_col, nb_col_shift)
1160 nass_shift = 0
1161 nb_row_shift = 0
1162 ENDIF
1163 panel2send = -1
1164 DO i=nb_row_shift+1,nb_blr_rows
1165 IF (begs_blr_row(i+1)-1-nass_shift
1166 & .GT.nbrows_already_sent+perm(1)-1) THEN
1167 panel2send = i
1168 EXIT
1169 ENDIF
1170 ENDDO
1171 IF (panel2send.EQ.-1) THEN
1172 write(*,*) 'Internal error: PANEL2SEND not found'
1174 ENDIF
1175 IF (keep(50).EQ.0) THEN
1176 nb_blr_cols = size(begs_blr_col) - 1
1177 ELSEIF (son_niv.EQ.1) THEN
1178 nb_blr_cols = panel2send
1179 ELSE
1180 nb_blr_cols = -1
1181 ncol_shift = npiv_lr
1182 nrow_shift = lrow - nrow
1183 DO i=nb_col_shift+1,size(begs_blr_col)-1
1184 IF (begs_blr_col(i+1)-ncol_shift.GT.
1185 & begs_blr_row(panel2send+1)-1+nrow_shift) THEN
1186 nb_blr_cols = i
1187 EXIT
1188 ENDIF
1189 ENDDO
1190 IF (nb_blr_cols.EQ.-1) THEN
1191 write(*,*) 'Internal error: NB_BLR_COLS not found'
1193 ENDIF
1194 max_row_length = begs_blr_row(panel2send+1)-1+nrow_shift
1195 ENDIF
1196 current_panel_size = begs_blr_row(panel2send+1)
1197 & - begs_blr_row(panel2send)
1198 panel_beg_offset = perm(1) + nbrows_already_sent -
1199 & begs_blr_row(panel2send) + nass_shift
1200 ENDIF
1201 state_son = iw_cbson(1+xxs)
1202 IF (state_son .EQ. s_nolcbcontig) THEN
1203 lda_son8 = int(lrow,8)
1204 shiftcb_son = int(npiv,8)*int(nrow,8)
1205 ELSE IF (state_son .EQ. s_nolcleaned) THEN
1206 lda_son8 = int(lrow,8)
1207 shiftcb_son = 0_8
1208 ELSE
1209 lda_son8 = int(nfront,8)
1210 shiftcb_son = int(npiv,8)
1211 ENDIF
1212 CALL zmumps_buf_size_available( buf_cb, size_av )
1213 IF (pdest .EQ. pdest_master) THEN
1214 size_desc_bande=0
1215 ELSE
1216 size_desc_bande=(7+slavef+keep(127)*2)
1217 size_desc_bande=size_desc_bande+int(dble(keep(12))*
1218 & dble(size_desc_bande)/100.0d0)
1219 size_desc_bande=
max(size_desc_bande,
1220 & 7+nslaves_pere+nfront_pere+nfront_pere-nass_pere)
1221 ENDIF
1222 desc_bande_bytes=size_desc_bande*sizeofint
1223 IF ( size_av .LT. size_rbuf_bytes-desc_bande_bytes ) THEN
1224 recv_buf_smaller_than_send = .false.
1225 ELSE
1226 recv_buf_smaller_than_send = .true.
1227 size_av = size_rbuf_bytes-desc_bande_bytes
1228 ENDIF
1229 size1=0
1230 IF (nbrows_already_sent==0) THEN
1231 IF(compute_max) THEN
1233 & comm, size0, ierr_mpi )
1234 IF(nfs4father .GT. 0) THEN
1236 & comm, size1, ierr_mpi )
1237 ENDIF
1238 size1 = size1+size0
1239 ENDIF
1240 ENDIF
1241 IF (keep(50) .EQ. 0) THEN
1242 oneortwo = 1
1243 ELSE
1244 oneortwo = 2
1245 ENDIF
1246 IF (pdest .EQ.pdest_master) THEN
1247 l = 0
1248 ELSE IF (keep(50) .EQ. 0) THEN
1249 l = lrow
1250 ELSE
1251 l = lrow + perm(1) - lmap + nbrows_already_sent - 1
1252 oneortwo=oneortwo+1
1253 ENDIF
1254 nbint = 6 + l + 1
1255 IF (cb_is_lr) THEN
1256 nbint = nbint + 4*(nb_blr_cols-nb_col_shift) + 2
1257 ENDIF
1259 & comm, tmpsize, ierr_mpi )
1260 size1 = size1 + tmpsize
1261 size_av = size_av - size1
1262 not_enough_space=.false.
1263 IF (size_av .LT.0 ) THEN
1264 nbrows_packet = 0
1265 not_enough_space=.true.
1266 ELSE
1267 IF ( keep(50) .EQ. 0 ) THEN
1268 nbrows_packet =
1269 & size_av / ( oneortwo*sizeofint+lrow*sizeofreal)
1270 ELSE
1271 b = 2 * oneortwo +
1272 & ( 1 + 2 * lrow + 2 * perm(1) + 2 * nbrows_already_sent )
1273 & * sizeofreal / sizeofint
1274 nbrows_packet=int((dble(-b)+sqrt((dble(b)*dble(b))+
1275 & dble(4)*dble(2)*dble(size_av)/dble(sizeofint) *
1276 & dble(sizeofreal/sizeofint)))*
1277 & dble(sizeofint) / dble(2) / dble(sizeofreal))
1278 ENDIF
1279 ENDIF
1280 10 CONTINUE
1281 nbrows_packet =
max( 0, nbrows_packet)
1282 nbrows_packet =
min(nbrow-nbrows_already_sent, nbrows_packet)
1283 not_enough_space = not_enough_space .OR.
1284 & (nbrows_packet .EQ.0.AND. nbrow.NE.0)
1285 nbrows_packet_2pack = nbrows_packet
1286 IF (cb_is_lr) THEN
1287 nbrows_packet_2pack = current_panel_size
1288 CALL mumps_blr_get_sizereals_cb_lrb(size_reals, cb_lrb,
1289 & nb_row_shift,
1290 & nb_col_shift, nb_blr_cols, panel2send
1291 & )
1292 not_enough_space = (size_av.LT.size_reals)
1293 IF (.NOT.not_enough_space) THEN
1294 nbrows_packet =
min(nbrows_packet,
1295 & current_panel_size-panel_beg_offset)
1296 ENDIF
1297 ENDIF
1298 IF (not_enough_space) THEN
1299 IF (recv_buf_smaller_than_send) THEN
1300 ierr = -3
1301 GOTO 100
1302 ELSE
1303 ierr = -1
1304 GOTO 100
1305 ENDIF
1306 ENDIF
1307 IF (cb_is_lr) THEN
1308 IF (keep(50).EQ.0) THEN
1309 max_row_length = -99999
1310 ELSEIF (son_niv.EQ.1) THEN
1311 max_row_length = lrow+perm(1)-lmap+nbrows_already_sent
1312 & + nbrows_packet_2pack-1
1313 ENDIF
1314 ELSE
1315 IF (keep(50).EQ.0) THEN
1316 max_row_length = -99999
1317 size_reals = nbrows_packet_2pack * lrow
1318 ELSE
1319 size_reals = ( lrow + perm(1) + nbrows_already_sent ) *
1320 & nbrows_packet_2pack + ( nbrows_packet_2pack *
1321 & ( nbrows_packet_2pack + 1) ) / 2
1322 max_row_length = lrow+perm(1)-lmap+nbrows_already_sent
1323 & + nbrows_packet_2pack-1
1324 ENDIF
1325 ENDIF
1326 size_integers = oneortwo* nbrows_packet_2pack
1328 & comm, size2, ierr_mpi )
1330 & comm, size3, ierr_mpi )
1331 IF (size2 + size3 .GT. size_av ) THEN
1332 nbrows_packet = nbrows_packet -1
1333 IF (nbrows_packet .GT. 0 .AND..NOT.cb_is_lr) THEN
1334 GOTO 10
1335 ELSE
1336 IF (recv_buf_smaller_than_send) THEN
1337 ierr = -3
1338 GOTO 100
1339 ELSE
1340 ierr = -1
1341 GOTO 100
1342 ENDIF
1343 ENDIF
1344 ENDIF
1345 size_pack = size1 + size2 + size3
1346 IF (nbrows_packet + nbrows_already_sent.NE.nbrow .AND.
1347 & size_pack .LT. size_rbuf_bytes / 4 .AND.
1348 & .NOT. recv_buf_smaller_than_send .AND.
1349 & .NOT. cb_is_lr)
1350 & THEN
1351 ierr = -1
1352 GOTO 100
1353 ENDIF
1354 IF (size_pack.GT.size_rbuf_bytes ) THEN
1355 ierr = -3
1356 GOTO 100
1357 ENDIF
1358 CALL buf_look( buf_cb, ipos, ireq, size_pack, ierr,
1359 & ione , pdest2)
1360 IF (ierr .EQ. -1 .OR. ierr.EQ. -2) THEN
1361 nbrows_packet = nbrows_packet - 1
1362 IF (nbrows_packet > 0 ) GOTO 10
1363 ENDIF
1364 IF ( ierr .LT. 0 ) GOTO 100
1365 position = 0
1366 CALL mpi_pack( ipere, 1, mpi_integer,
1367 & buf_cb%CONTENT( ipos ), size_pack,
1368 & position, comm, ierr_mpi )
1369 CALL mpi_pack( ison, 1, mpi_integer,
1370 & buf_cb%CONTENT( ipos ), size_pack,
1371 & position, comm, ierr_mpi )
1372 CALL mpi_pack( nbrow, 1, mpi_integer,
1373 & buf_cb%CONTENT( ipos ), size_pack,
1374 & position, comm, ierr_mpi )
1375 IF (keep(50)==0) THEN
1376 CALL mpi_pack( lrow, 1, mpi_integer,
1377 & buf_cb%CONTENT( ipos ), size_pack,
1378 & position, comm, ierr_mpi )
1379 ELSE
1380 CALL mpi_pack( max_row_length, 1, mpi_integer,
1381 & buf_cb%CONTENT( ipos ), size_pack,
1382 & position, comm, ierr_mpi )
1383 ENDIF
1384 CALL mpi_pack( nbrows_already_sent, 1, mpi_integer,
1385 & buf_cb%CONTENT( ipos ), size_pack,
1386 & position, comm, ierr_mpi )
1387 CALL mpi_pack( nbrows_packet, 1, mpi_integer,
1388 & buf_cb%CONTENT( ipos ), size_pack,
1389 & position, comm, ierr_mpi )
1390 CALL mpi_pack( cb_is_lr_int, 1, mpi_integer,
1391 & buf_cb%CONTENT( ipos ), size_pack,
1392 & position, comm, ierr_mpi )
1393 IF ( pdest .NE. pdest_master ) THEN
1394 IF (keep(50)==0) THEN
1395 CALL mpi_pack( iw_cbson( hs + nrow + npiv + 1 ), lrow,
1396 & mpi_integer,
1397 & buf_cb%CONTENT( ipos ), size_pack,
1398 & position, comm, ierr_mpi )
1399 ELSE
1400 IF (max_row_length > 0) THEN
1401 CALL mpi_pack( iw_cbson( hs + nrow + npiv + 1 ),
1402 & max_row_length,
1403 & mpi_integer,
1404 & buf_cb%CONTENT( ipos ), size_pack,
1405 & position, comm, ierr_mpi )
1406 ENDIF
1407 ENDIF
1408 END IF
1409 DO j=nbrows_already_sent+1,nbrows_already_sent+nbrows_packet
1410 i = perm(j)
1411 indice_pere=maprow(i)
1413 & keep,keep8, ipere, step, n, slavef,
1414 & istep_to_iniv2, tab_pos_in_pere,
1415 &
1416 & nass_pere,
1417 & nfront_pere - nass_pere,
1418 & nslaves_pere,
1419 & indice_pere,
1420 & nosla,
1421 & ipos_in_slave )
1422 indice_pere = ipos_in_slave
1423 CALL mpi_pack( indice_pere, 1, mpi_integer,
1424 & buf_cb%CONTENT( ipos ), size_pack,
1425 & position, comm, ierr_mpi )
1426 ENDDO
1427 IF (cb_is_lr) THEN
1428 CALL zmumps_blr_pack_cb_lrb(cb_lrb, nb_row_shift,
1429 & nb_col_shift, nb_blr_cols, panel2send,
1430 & panel_beg_offset,
1431 & buf_cb%CONTENT(ipos:),
1432 & size_pack, position, comm, ierr
1433 & )
1434 IF (keep(50).ne.0) THEN
1435 DO j=nbrows_already_sent+1,nbrows_already_sent+nbrows_packet
1436 i = perm(j)
1437 this_row_length = lrow + i - lmap
1438 CALL mpi_pack( this_row_length, 1, mpi_integer,
1439 & buf_cb%CONTENT( ipos ), size_pack,
1440 & position, comm, ierr_mpi )
1441 ENDDO
1442 ENDIF
1443 GOTO 200
1444 ENDIF
1445 DO j=nbrows_already_sent+1,nbrows_already_sent+nbrows_packet
1446 i = perm(j)
1447 indice_pere=maprow(i)
1449 & keep,keep8, ipere, step, n, slavef,
1450 & istep_to_iniv2, tab_pos_in_pere,
1451 &
1452 & nass_pere,
1453 & nfront_pere - nass_pere,
1454 & nslaves_pere,
1455 & indice_pere,
1456 & nosla,
1457 & ipos_in_slave )
1458 IF (keep(50).ne.0) THEN
1459 this_row_length = lrow + i - lmap
1460 CALL mpi_pack( this_row_length, 1, mpi_integer,
1461 & buf_cb%CONTENT( ipos ), size_pack,
1462 & position, comm, ierr_mpi )
1463 ELSE
1464 this_row_length = lrow
1465 ENDIF
1466 IF (desc_in_lu) THEN
1467 IF ( packed_cb ) THEN
1468 IF (nelim.EQ.0) THEN
1469 itmp8 = int(i,8)
1470 ELSE
1471 itmp8 = int(nelim+i,8)
1472 ENDIF
1473 apos = itmp8 * (itmp8-1_8) / 2_8 + 1_8
1474 ELSE
1475 apos = int(i+nelim-1, 8) * int(lrow,8) + 1_8
1476 ENDIF
1477 ELSE
1478 IF ( packed_cb ) THEN
1479 IF ( lrow .EQ. nrow ) THEN
1480 itmp8 = int(i,8)
1481 apos = itmp8 * (itmp8-1_8)/2_8 + 1_8
1482 ELSE
1483 itmp8 = int(i + lrow - nrow,8)
1484 apos = itmp8 * (itmp8-1_8)/2_8 + 1_8 -
1485 & int(lrow - nrow, 8) * int(lrow-nrow+1,8) / 2_8
1486 ENDIF
1487 ELSE
1488 apos = int( i - 1, 8 ) * lda_son8 + shiftcb_son + 1_8
1489 ENDIF
1490 ENDIF
1491 CALL mpi_pack( a_cbson( apos ), this_row_length,
1492 & mpi_double_complex,
1493 & buf_cb%CONTENT( ipos ), size_pack,
1494 & position, comm, ierr_mpi )
1495 ENDDO
1496 200 CONTINUE
1497 IF (nbrows_already_sent == 0) THEN
1498 IF (compute_max) THEN
1500 & mpi_integer,
1501 & buf_cb%CONTENT( ipos ), size_pack,
1502 & position, comm, ierr_mpi )
1503 IF (nfs4father .GT. 0) THEN
1504 IF (cb_is_lr) THEN
1506 & iw_cbson(1+xxf), m_array)
1507 CALL mpi_pack(m_array(1), nfs4father,
1508 & mpi_double_precision,
1509 & buf_cb%CONTENT( ipos ), size_pack,
1510 & position, comm, ierr_mpi )
1512 ELSE
1513 buf_max_array(1:nfs4father) = zero
1514 IF(maprow(nrow) .GT. nass_pere) THEN
1515 DO ps1=1,nrow
1516 IF(maprow(ps1).GT.nass_pere) EXIT
1517 ENDDO
1518 IF (desc_in_lu) THEN
1519 IF (packed_cb) THEN
1520 apos = int(nelim+ps1,8) * int(nelim+ps1-1,8) /
1521 & 2_8 + 1_8
1522 nca = -44444
1523 asize = int(nrow,8) * int(nrow+1,8)/2_8 -
1524 & int(nelim+ps1,8) * int(nelim+ps1-1,8)/2_8
1525 lrow1 = ps1 + nelim
1526 ELSE
1527 apos = int(ps1+nelim-1,8) * int(lrow,8) + 1_8
1528 nca = lrow
1529 asize = int(nca,8) * int(nrow-ps1+1,8)
1530 lrow1 = lrow
1531 ENDIF
1532 ELSE
1533 IF (packed_cb) THEN
1534 IF (npiv.NE.0) THEN
1535 WRITE(*,*) "Error in PARPIV/ZMUMPS_BUF_SEND_CONTRIB_TYPE2"
1537 ENDIF
1538 lrow1=lrow-nrow+ps1
1539 itmp8 = int(ps1 + lrow - nrow,8)
1540 apos = itmp8 * (itmp8 - 1_8) / 2_8 + 1_8 -
1541 & int(lrow-nrow,8)*int(lrow-nrow+1,8)/2_8
1542 asize = int(lrow,8)*int(lrow+1,8)/2_8 -
1543 & itmp8*(itmp8-1_8)/2_8
1544 nca = -555555
1545 ELSE
1546 apos = int(ps1-1,8) * lda_son8 + 1_8 + shiftcb_son
1547 nca = int(lda_son8)
1548 asize = la_cbson - apos + 1_8
1549 lrow1=-666666
1550 ENDIF
1551 ENDIF
1552 IF ( nrow-ps1+1-keep253_loc-nvschur .GT. 0 ) THEN
1554 & a_cbson(apos),asize,nca,
1555 & nrow-ps1+1-keep253_loc-nvschur,
1556 & buf_max_array,nfs4father,packed_cb,lrow1)
1557 ENDIF
1558 ENDIF
1559 CALL mpi_pack(buf_max_array, nfs4father,
1560 & mpi_double_precision,
1561 & buf_cb%CONTENT( ipos ), size_pack,
1562 & position, comm, ierr_mpi )
1563 ENDIF
1564 ENDIF
1565 ENDIF
1566 ENDIF
1567 keep(266)=keep(266)+1
1568 CALL mpi_isend( buf_cb%CONTENT( ipos ), position, mpi_packed,
1569 & pdest, contrib_type2, comm,
1570 & buf_cb%CONTENT( ireq ), ierr_mpi )
1571 IF ( size_pack.LT. position ) THEN
1572 WRITE(*,*) ' contniv2: SIZE, POSITION =',size_pack, position
1573 WRITE(*,*) ' NBROW, LROW = ', nbrow, lrow
1575 END IF
1576 IF ( size_pack .NE. position )
1577 & CALL buf_adjust( buf_cb, position )
1578 nbrows_already_sent=nbrows_already_sent + nbrows_packet
1579 IF (nbrows_already_sent .NE. nbrow ) THEN
1580 ierr = -1
1581 ENDIF
1582 100 CONTINUE
1583 RETURN
subroutine mumps_bloc2_get_islave(keep, keep8, inode, step, n, slavef, istep_to_iniv2, tab_pos_in_pere nass, ncb, nslaves, position, islave, iposslave)
subroutine, public zmumps_blr_retrieve_m_array(iwhandler, m_array)
subroutine, public zmumps_blr_retrieve_begsblr_sta(iwhandler, begs_blr_static)
subroutine, public zmumps_blr_free_m_array(iwhandler)
subroutine, public zmumps_blr_retrieve_cb_lrb(iwhandler, thecb)
subroutine, public zmumps_blr_retrieve_nb_panels(iwhandler, nb_panels)
subroutine, public zmumps_blr_retrieve_begsblr_dyn(iwhandler, begs_blr_dynamic)
subroutine, public zmumps_blr_retrieve_begs_blr_c(iwhandler, begs_blr_col, nb_panels)