1253 include 'mpif.h'
1254 TYPE(BLR_STRUC_T) :: BLR_STRUC
1255 INTEGER,intent(IN)::unit,MYID
1256 CHARACTER(len=*),intent(IN) :: mode
1257 INTEGER,INTENT(OUT) :: Local_SIZE_GEST
1258 INTEGER(8),intent(OUT) :: Local_SIZE_VARIABLES
1259 INTEGER,intent(INOUT):: INFO(2)
1260 INTEGER,intent(IN):: SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1261 INTEGER(8),intent(IN) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1262 INTEGER(8),intent(INOUT):: size_read,size_allocated,size_written
1263 INTEGER :: NBVARIABLES_BLR_STRUC_T
1264 parameter(nbvariables_blr_struc_t = 15)
1265 CHARACTER(len=30), dimension(NBVARIABLES_BLR_STRUC_T)::
1266 & VARIABLES_BLR_STRUC_T
1267 CHARACTER(len=30) :: TMP_STRING
1268 INTEGER(8),dimension(NBVARIABLES_BLR_STRUC_T)::
1269 & SIZE_VARIABLES_BLR_STRUC_T
1270 INTEGER,dimension(NBVARIABLES_BLR_STRUC_T)::SIZE_GEST_BLR_STRUC_T
1271 INTEGER,dimension(NBVARIABLES_BLR_STRUC_T)::NbRecords_BLR_STRUC_T
1272 INTEGER:: size_array1,size_array2,dummy,allocok
1273 INTEGER:: err,i1,j1,j2,NbSubRecords,Local_NbRecords
1274 INTEGER::SIZE_GEST_PANELS_L,SIZE_GEST_PANELS_L_j1
1275 INTEGER(8)::SIZE_VARIABLES_PANELS_L,SIZE_VARIABLES_PANELS_L_j1
1276 INTEGER::SIZE_GEST_PANELS_U,SIZE_GEST_PANELS_U_j1
1277 INTEGER(8)::SIZE_VARIABLES_PANELS_U,SIZE_VARIABLES_PANELS_U_j1
1278 INTEGER::SIZE_GEST_CB_LRB,SIZE_GEST_CB_LRB_j1j2
1279 INTEGER(8)::SIZE_VARIABLES_CB_LRB,SIZE_VARIABLES_CB_LRB_j1j2
1280 INTEGER::SIZE_GEST_DIAG_BLOCKS,SIZE_GEST_DIAG_BLOCKS_j1
1281 INTEGER(8)::SIZE_VARIABLES_DIAG_BLOCKS
1282 INTEGER(8)::SIZE_VARIABLES_DIAG_BLOCKS_j1
1283 INTEGER(4)::I4
1284 variables_blr_struc_t(1)="IsSYM"
1285 variables_blr_struc_t(2)="IsT2"
1286 variables_blr_struc_t(3)="IsSLAVE"
1287 variables_blr_struc_t(4)="PANELS_L"
1288 variables_blr_struc_t(5)="PANELS_U"
1289 variables_blr_struc_t(6)="CB_LRB"
1290 variables_blr_struc_t(7)="BEGS_BLR_STATIC"
1291 variables_blr_struc_t(8)="BEGS_BLR_DYNAMIC"
1292 variables_blr_struc_t(9)="BEGS_BLR_L"
1293 variables_blr_struc_t(10)="BEGS_BLR_COL"
1294 variables_blr_struc_t(11)="NB_ACCESSES_INIT"
1295 variables_blr_struc_t(12)="NB_PANELS"
1296 variables_blr_struc_t(13)="DIAG_BLOCKS"
1297 variables_blr_struc_t(14)="NFS4FATHER"
1298 variables_blr_struc_t(15)="M_ARRAY"
1299 size_variables_blr_struc_t(:)=0_8
1300 size_gest_blr_struc_t(:)=0
1301 nbrecords_blr_struc_t(:)=0
1302 size_gest_panels_l=0
1303 size_gest_panels_l_j1=0
1304 size_variables_panels_l=0_8
1305 size_variables_panels_l_j1=0_8
1306 size_gest_panels_u=0
1307 size_gest_panels_u_j1=0
1308 size_variables_panels_u=0_8
1309 size_variables_panels_u_j1=0_8
1310 size_gest_cb_lrb=0
1311 size_gest_cb_lrb_j1j2=0
1312 size_variables_cb_lrb=0_8
1313 size_variables_cb_lrb_j1j2=0_8
1314 size_gest_diag_blocks=0
1315 size_gest_diag_blocks_j1=0
1316 size_variables_diag_blocks=0_8
1317 size_variables_diag_blocks_j1=0_8
1318 DO i1=1,nbvariables_blr_struc_t
1319 tmp_string = variables_blr_struc_t(i1)
1320 SELECT CASE(tmp_string)
1321 CASE("IsSYM")
1322 nbrecords_blr_struc_t(i1)=1
1323 if(trim(mode).EQ."memory_save") then
1324 size_variables_blr_struc_t(i1)=size_logical
1325 elseif(trim(mode).EQ."save") then
1326 size_variables_blr_struc_t(i1)=size_logical
1327 write(unit,iostat=err) blr_struc%IsSYM
1328 if(err.ne.0) then
1329 info(1) = -72
1331 & info(2))
1332 endif
1333 IF ( info(1) .LT. 0 ) GOTO 100
1334 elseif(trim(mode).EQ."restore") then
1335 size_variables_blr_struc_t(i1)=size_logical
1336 read(unit,iostat=err) blr_struc%IsSYM
1337 if(err.ne.0) THEN
1338 info(1) = -75
1340 & ,info(2))
1341 endif
1342 IF (info(1) .LT. 0 ) GOTO 100
1343 endif
1344 CASE("IsT2")
1345 nbrecords_blr_struc_t(i1)=1
1346 if(trim(mode).EQ."memory_save") then
1347 size_variables_blr_struc_t(i1)=size_logical
1348 elseif(trim(mode).EQ."save") then
1349 size_variables_blr_struc_t(i1)=size_logical
1350 write(unit,iostat=err) blr_struc%IsT2
1351 if(err.ne.0) then
1352 info(1) = -72
1354 & info(2))
1355 endif
1356 IF ( info(1) .LT. 0 ) GOTO 100
1357 elseif(trim(mode).EQ."restore") then
1358 size_variables_blr_struc_t(i1)=size_logical
1359 read(unit,iostat=err) blr_struc%IsT2
1360 if(err.ne.0) THEN
1361 info(1) = -75
1363 & ,info(2))
1364 endif
1365 IF (info(1) .LT. 0 ) GOTO 100
1366 endif
1367 CASE("IsSLAVE")
1368 nbrecords_blr_struc_t(i1)=1
1369 if(trim(mode).EQ."memory_save") then
1370 size_variables_blr_struc_t(i1)=size_logical
1371 elseif(trim(mode).EQ."save") then
1372 size_variables_blr_struc_t(i1)=size_logical
1373 write(unit,iostat=err) blr_struc%IsSLAVE
1374 if(err.ne.0) then
1375 info(1) = -72
1377 & info(2))
1378 endif
1379 IF ( info(1) .LT. 0 ) GOTO 100
1380 elseif(trim(mode).EQ."restore") then
1381 size_variables_blr_struc_t(i1)=size_logical
1382 read(unit,iostat=err) blr_struc%IsSLAVE
1383 if(err.ne.0) THEN
1384 info(1) = -75
1386 & ,info(2))
1387 endif
1388 IF (info(1) .LT. 0 ) GOTO 100
1389 endif
1390 CASE("BEGS_BLR_STATIC")
1391 nbrecords_blr_struc_t(i1)=2
1392 if(trim(mode).EQ."memory_save") then
1393 IF(associated(blr_struc%BEGS_BLR_STATIC)) THEN
1394 size_gest_blr_struc_t(i1)=size_int
1395 size_variables_blr_struc_t(i1)=
1396 & size(blr_struc%BEGS_BLR_STATIC,1)*size_int
1397 ELSE
1398 size_gest_blr_struc_t(i1)=size_int*2
1399 size_variables_blr_struc_t(i1)=0
1400 ENDIF
1401 elseif(trim(mode).EQ."save") then
1402 IF(associated(blr_struc%BEGS_BLR_STATIC)) THEN
1403 size_gest_blr_struc_t(i1)=size_int
1404 size_variables_blr_struc_t(i1)=
1405 & size(blr_struc%BEGS_BLR_STATIC,1)*size_int
1406 write(unit,iostat=err)
1407 & size(blr_struc%BEGS_BLR_STATIC,1)
1408 if(err.ne.0) then
1409 info(1) = -72
1411 & info(2))
1412 endif
1413 IF ( info(1) .LT. 0 ) GOTO 100
1414 write(unit,iostat=err) blr_struc%BEGS_BLR_STATIC
1415 ELSE
1416 size_gest_blr_struc_t(i1)=size_int*2
1417 size_variables_blr_struc_t(i1)=0
1418 write(unit,iostat=err) -999
1419 if(err.ne.0) then
1420 info(1) = -72
1422 & info(2))
1423 endif
1424 IF ( info(1) .LT. 0 ) GOTO 100
1425 write(unit,iostat=err) -999
1426 ENDIF
1427 if(err.ne.0) then
1428 info(1) = -72
1430 & info(2))
1431 endif
1432 IF ( info(1) .LT. 0 ) GOTO 100
1433 elseif(trim(mode).EQ."restore") then
1434 nullify(blr_struc%BEGS_BLR_STATIC)
1435 read(unit,iostat=err) size_array1
1436 if(err.ne.0) THEN
1437 info(1) = -75
1439 & ,info(2))
1440 endif
1441 IF ( info(1) .LT. 0 ) GOTO 100
1442 if(size_array1.EQ.-999) then
1443 size_gest_blr_struc_t(i1)=size_int*2
1444 size_variables_blr_struc_t(i1)=0
1445 read(unit,iostat=err) dummy
1446 else
1447 size_gest_blr_struc_t(i1)=size_int
1448 size_variables_blr_struc_t(i1)=size_array1*size_int
1449 allocate(blr_struc%BEGS_BLR_STATIC(size_array1)
1450 & , stat=allocok)
1451 if (allocok .GT. 0) THEN
1452 info(1) = -78
1454 & total_struc_size-size_allocated
1455 & ,info(2))
1456 endif
1457 read(unit,iostat=err) blr_struc%BEGS_BLR_STATIC
1458 endif
1459 IF ( info(1) .LT. 0 ) GOTO 100
1460 if(err.ne.0) THEN
1461 info(1) = -75
1463 & ,info(2))
1464 endif
1465 IF ( info(1) .LT. 0 ) GOTO 100
1466 endif
1467 CASE("BEGS_BLR_DYNAMIC")
1468 nbrecords_blr_struc_t(i1)=2
1469 if(trim(mode).EQ."memory_save") then
1470 IF(associated(blr_struc%BEGS_BLR_DYNAMIC)) THEN
1471 size_gest_blr_struc_t(i1)=size_int
1472 size_variables_blr_struc_t(i1)=
1473 & size(blr_struc%BEGS_BLR_DYNAMIC,1)*size_int
1474 ELSE
1475 size_gest_blr_struc_t(i1)=size_int*2
1476 size_variables_blr_struc_t(i1)=0
1477 ENDIF
1478 elseif(trim(mode).EQ."save") then
1479 IF(associated(blr_struc%BEGS_BLR_DYNAMIC)) THEN
1480 size_gest_blr_struc_t(i1)=size_int
1481 size_variables_blr_struc_t(i1)=
1482 & size(blr_struc%BEGS_BLR_DYNAMIC,1)*size_int
1483 write(unit,iostat=err)
1484 & size(blr_struc%BEGS_BLR_DYNAMIC,1)
1485 if(err.ne.0) then
1486 info(1) = -72
1488 & info(2))
1489 endif
1490 IF ( info(1) .LT. 0 ) GOTO 100
1491 write(unit,iostat=err) blr_struc%BEGS_BLR_DYNAMIC
1492 ELSE
1493 size_gest_blr_struc_t(i1)=size_int*2
1494 size_variables_blr_struc_t(i1)=0
1495 write(unit,iostat=err) -999
1496 if(err.ne.0) then
1497 info(1) = -72
1499 & info(2))
1500 endif
1501 IF ( info(1) .LT. 0 ) GOTO 100
1502 write(unit,iostat=err) -999
1503 ENDIF
1504 if(err.ne.0) then
1505 info(1) = -72
1507 & info(2))
1508 endif
1509 IF ( info(1) .LT. 0 ) GOTO 100
1510 elseif(trim(mode).EQ."restore") then
1511 nullify(blr_struc%BEGS_BLR_DYNAMIC)
1512 read(unit,iostat=err) size_array1
1513 if(err.ne.0) THEN
1514 info(1) = -75
1516 & ,info(2))
1517 endif
1518 IF ( info(1) .LT. 0 ) GOTO 100
1519 if(size_array1.EQ.-999) then
1520 size_gest_blr_struc_t(i1)=size_int*2
1521 size_variables_blr_struc_t(i1)=0
1522 read(unit,iostat=err) dummy
1523 else
1524 size_gest_blr_struc_t(i1)=size_int
1525 size_variables_blr_struc_t(i1)=size_array1*size_int
1526 allocate(blr_struc%BEGS_BLR_DYNAMIC(size_array1)
1527 & , stat=allocok)
1528 if (allocok .GT. 0) THEN
1529 info(1) = -78
1531 & total_struc_size-size_allocated
1532 & ,info(2))
1533 endif
1534 read(unit,iostat=err) blr_struc%BEGS_BLR_DYNAMIC
1535 endif
1536 IF ( info(1) .LT. 0 ) GOTO 100
1537 if(err.ne.0) THEN
1538 info(1) = -75
1540 & ,info(2))
1541 endif
1542 IF ( info(1) .LT. 0 ) GOTO 100
1543 endif
1544 CASE("BEGS_BLR_L")
1545 nbrecords_blr_struc_t(i1)=2
1546 if(trim(mode).EQ."memory_save") then
1547 IF(associated(blr_struc%BEGS_BLR_L)) THEN
1548 size_gest_blr_struc_t(i1)=size_int
1549 size_variables_blr_struc_t(i1)=
1550 & size(blr_struc%BEGS_BLR_L,1)*size_int
1551 ELSE
1552 size_gest_blr_struc_t(i1)=size_int*2
1553 size_variables_blr_struc_t(i1)=0
1554 ENDIF
1555 elseif(trim(mode).EQ."save") then
1556 IF(associated(blr_struc%BEGS_BLR_L)) THEN
1557 size_gest_blr_struc_t(i1)=size_int
1558 size_variables_blr_struc_t(i1)=
1559 & size(blr_struc%BEGS_BLR_L,1)*size_int
1560 write(unit,iostat=err)
1561 & size(blr_struc%BEGS_BLR_L,1)
1562 if(err.ne.0) then
1563 info(1) = -72
1565 & info(2))
1566 endif
1567 IF ( info(1) .LT. 0 ) GOTO 100
1568 write(unit,iostat=err) blr_struc%BEGS_BLR_L
1569 ELSE
1570 size_gest_blr_struc_t(i1)=size_int*2
1571 size_variables_blr_struc_t(i1)=0
1572 write(unit,iostat=err) -999
1573 if(err.ne.0) then
1574 info(1) = -72
1576 & info(2))
1577 endif
1578 IF ( info(1) .LT. 0 ) GOTO 100
1579 write(unit,iostat=err) -999
1580 ENDIF
1581 if(err.ne.0) then
1582 info(1) = -72
1584 & info(2))
1585 endif
1586 IF ( info(1) .LT. 0 ) GOTO 100
1587 elseif(trim(mode).EQ."restore") then
1588 nullify(blr_struc%BEGS_BLR_L)
1589 read(unit,iostat=err) size_array1
1590 if(err.ne.0) THEN
1591 info(1) = -75
1593 & ,info(2))
1594 endif
1595 IF ( info(1) .LT. 0 ) GOTO 100
1596 if(size_array1.EQ.-999) then
1597 size_gest_blr_struc_t(i1)=size_int*2
1598 size_variables_blr_struc_t(i1)=0
1599 read(unit,iostat=err) dummy
1600 else
1601 size_gest_blr_struc_t(i1)=size_int
1602 size_variables_blr_struc_t(i1)=size_array1*size_int
1603 allocate(blr_struc%BEGS_BLR_L(size_array1)
1604 & , stat=allocok)
1605 if (allocok .GT. 0) THEN
1606 info(1) = -78
1608 & total_struc_size-size_allocated
1609 & ,info(2))
1610 endif
1611 read(unit,iostat=err) blr_struc%BEGS_BLR_L
1612 endif
1613 IF ( info(1) .LT. 0 ) GOTO 100
1614 if(err.ne.0) THEN
1615 info(1) = -75
1617 & ,info(2))
1618 endif
1619 IF ( info(1) .LT. 0 ) GOTO 100
1620 endif
1621 CASE("BEGS_BLR_COL")
1622 nbrecords_blr_struc_t(i1)=2
1623 if(trim(mode).EQ."memory_save") then
1624 IF(associated(blr_struc%BEGS_BLR_COL)) THEN
1625 size_gest_blr_struc_t(i1)=size_int
1626 size_variables_blr_struc_t(i1)=
1627 & size(blr_struc%BEGS_BLR_COL,1)*size_int
1628 ELSE
1629 size_gest_blr_struc_t(i1)=size_int*2
1630 size_variables_blr_struc_t(i1)=0
1631 ENDIF
1632 elseif(trim(mode).EQ."save") then
1633 IF(associated(blr_struc%BEGS_BLR_COL)) THEN
1634 size_gest_blr_struc_t(i1)=size_int
1635 size_variables_blr_struc_t(i1)=
1636 & size(blr_struc%BEGS_BLR_COL,1)*size_int
1637 write(unit,iostat=err)
1638 & size(blr_struc%BEGS_BLR_COL,1)
1639 if(err.ne.0) then
1640 info(1) = -72
1642 & info(2))
1643 endif
1644 IF ( info(1) .LT. 0 ) GOTO 100
1645 write(unit,iostat=err) blr_struc%BEGS_BLR_COL
1646 ELSE
1647 size_gest_blr_struc_t(i1)=size_int*2
1648 size_variables_blr_struc_t(i1)=0
1649 write(unit,iostat=err) -999
1650 if(err.ne.0) then
1651 info(1) = -72
1653 & info(2))
1654 endif
1655 IF ( info(1) .LT. 0 ) GOTO 100
1656 write(unit,iostat=err) -999
1657 ENDIF
1658 if(err.ne.0) then
1659 info(1) = -72
1661 & info(2))
1662 endif
1663 IF ( info(1) .LT. 0 ) GOTO 100
1664 elseif(trim(mode).EQ."restore") then
1665 nullify(blr_struc%BEGS_BLR_COL)
1666 read(unit,iostat=err) size_array1
1667 if(err.ne.0) THEN
1668 info(1) = -75
1670 & ,info(2))
1671 endif
1672 IF ( info(1) .LT. 0 ) GOTO 100
1673 if(size_array1.EQ.-999) then
1674 size_gest_blr_struc_t(i1)=size_int*2
1675 size_variables_blr_struc_t(i1)=0
1676 read(unit,iostat=err) dummy
1677 else
1678 size_gest_blr_struc_t(i1)=size_int
1679 size_variables_blr_struc_t(i1)=size_array1*size_int
1680 allocate(blr_struc%BEGS_BLR_COL(size_array1)
1681 & , stat=allocok)
1682 if (allocok .GT. 0) THEN
1683 info(1) = -78
1685 & total_struc_size-size_allocated
1686 & ,info(2))
1687 endif
1688 read(unit,iostat=err) blr_struc%BEGS_BLR_COL
1689 endif
1690 IF ( info(1) .LT. 0 ) GOTO 100
1691 if(err.ne.0) THEN
1692 info(1) = -75
1694 & ,info(2))
1695 endif
1696 IF ( info(1) .LT. 0 ) GOTO 100
1697 endif
1698 CASE("NB_ACCESSES_INIT")
1699 nbrecords_blr_struc_t(i1)=1
1700 if(trim(mode).EQ."memory_save") then
1701 size_variables_blr_struc_t(i1)=size_int
1702 elseif(trim(mode).EQ."save") then
1703 size_variables_blr_struc_t(i1)=size_int
1704 write(unit,iostat=err) blr_struc%NB_ACCESSES_INIT
1705 if(err.ne.0) then
1706 info(1) = -72
1708 & info(2))
1709 endif
1710 IF ( info(1) .LT. 0 ) GOTO 100
1711 elseif(trim(mode).EQ."restore") then
1712 size_variables_blr_struc_t(i1)=size_int
1713 read(unit,iostat=err) blr_struc%NB_ACCESSES_INIT
1714 if(err.ne.0) THEN
1715 info(1) = -75
1717 & ,info(2))
1718 endif
1719 IF (info(1) .LT. 0 ) GOTO 100
1720 endif
1721 CASE("NB_PANELS")
1722 nbrecords_blr_struc_t(i1)=1
1723 if(trim(mode).EQ."memory_save") then
1724 size_variables_blr_struc_t(i1)=size_int
1725 elseif(trim(mode).EQ."save") then
1726 size_variables_blr_struc_t(i1)=size_int
1727 write(unit,iostat=err) blr_struc%NB_PANELS
1728 if(err.ne.0) then
1729 info(1) = -72
1731 & info(2))
1732 endif
1733 IF ( info(1) .LT. 0 ) GOTO 100
1734 elseif(trim(mode).EQ."restore") then
1735 size_variables_blr_struc_t(i1)=size_int
1736 read(unit,iostat=err) blr_struc%NB_PANELS
1737 if(err.ne.0) THEN
1738 info(1) = -75
1740 & ,info(2))
1741 endif
1742 IF (info(1) .LT. 0 ) GOTO 100
1743 endif
1744 CASE("PANELS_L")
1745 if(trim(mode).EQ."memory_save") then
1746 IF(associated(blr_struc%PANELS_L)) THEN
1747 nbrecords_blr_struc_t(i1)=1
1748 size_gest_blr_struc_t(i1)=size_int
1749 size_variables_blr_struc_t(i1)=0
1750 DO j1=1,size(blr_struc%PANELS_L,1)
1751 CALL smumps_save_restore_blr_panel(
1752 & blr_struc%PANELS_L(j1)
1753 & ,unit,myid,"memory_save"
1754 & ,size_gest_panels_l_j1
1755 & ,size_variables_panels_l_j1
1756 & ,size_int, size_arith_dep, size_logical
1757 & ,total_file_size,total_struc_size
1758 & ,size_read,size_allocated,size_written
1759 & ,info)
1760 size_gest_panels_l=size_gest_panels_l+
1761 & size_gest_panels_l_j1
1762 size_variables_panels_l=size_variables_panels_l+
1763 & size_variables_panels_l_j1
1764 ENDDO
1765 ELSE
1766 nbrecords_blr_struc_t(i1)=2
1767 size_gest_blr_struc_t(i1)=size_int*2
1768 size_variables_blr_struc_t(i1)=0
1769 ENDIF
1770 elseif(trim(mode).EQ."save") then
1771 IF(associated(blr_struc%PANELS_L)) THEN
1772 nbrecords_blr_struc_t(i1)=1
1773 size_gest_blr_struc_t(i1)=size_int
1774 size_variables_blr_struc_t(i1)=0
1775 write(unit,iostat=err)
1776 & size(blr_struc%PANELS_L,1)
1777 if(err.ne.0) then
1778 info(1) = -72
1780 & info(2))
1781 endif
1782 DO j1=1,size(blr_struc%PANELS_L,1)
1783 CALL smumps_save_restore_blr_panel(
1784 & blr_struc%PANELS_L(j1)
1785 & ,unit,myid,"save"
1786 & ,size_gest_panels_l_j1
1787 & ,size_variables_panels_l_j1
1788 & ,size_int, size_arith_dep, size_logical
1789 & ,total_file_size,total_struc_size
1790 & ,size_read,size_allocated,size_written
1791 & ,info)
1792 IF ( info(1) .LT. 0 ) GOTO 100
1793 ENDDO
1794 ELSE
1795 nbrecords_blr_struc_t(i1)=2
1796 size_gest_blr_struc_t(i1)=size_int*2
1797 size_variables_blr_struc_t(i1)=0
1798 write(unit,iostat=err) -999
1799 if(err.ne.0) then
1800 info(1) = -72
1802 & info(2))
1803 endif
1804 IF ( info(1) .LT. 0 ) GOTO 100
1805 write(unit,iostat=err) -999
1806 if(err.ne.0) then
1807 info(1) = -72
1809 & info(2))
1810 endif
1811 IF ( info(1) .LT. 0 ) GOTO 100
1812 ENDIF
1813 elseif(trim(mode).EQ."restore") then
1814 nullify(blr_struc%PANELS_L)
1815 read(unit,iostat=err) size_array1
1816 if(err.ne.0) THEN
1817 info(1) = -75
1819 & ,info(2))
1820 endif
1821 IF ( info(1) .LT. 0 ) GOTO 100
1822 if(size_array1.EQ.-999) then
1823 nbrecords_blr_struc_t(i1)=2
1824 size_gest_blr_struc_t(i1)=size_int*2
1825 size_variables_blr_struc_t(i1)=0
1826 read(unit,iostat=err) dummy
1827 if(err.ne.0) THEN
1828 info(1) = -75
1830 & ,info(2))
1831 endif
1832 IF ( info(1) .LT. 0 ) GOTO 100
1833 else
1834 nbrecords_blr_struc_t(i1)=1
1835 size_gest_blr_struc_t(i1)=size_int
1836 size_variables_blr_struc_t(i1)=0
1837 allocate(blr_struc%PANELS_L(size_array1)
1838 & , stat=allocok)
1839 if (allocok .GT. 0) THEN
1840 info(1) = -78
1842 & total_struc_size-size_allocated
1843 & ,info(2))
1844 endif
1845 DO j1=1,size_array1
1846 CALL smumps_save_restore_blr_panel(
1847 & blr_struc%PANELS_L(j1)
1848 & ,unit,myid,"restore"
1849 & ,size_gest_panels_l_j1
1850 & ,size_variables_panels_l_j1
1851 & ,size_int, size_arith_dep, size_logical
1852 & ,total_file_size,total_struc_size
1853 & ,size_read,size_allocated,size_written
1854 & ,info)
1855 size_gest_panels_l=size_gest_panels_l+
1856 & size_gest_panels_l_j1
1857 size_variables_panels_l=size_variables_panels_l+
1858 & size_variables_panels_l_j1
1859 ENDDO
1860 endif
1861 endif
1862 CASE("PANELS_U")
1863 if(trim(mode).EQ."memory_save") then
1864 IF(associated(blr_struc%PANELS_U)) THEN
1865 nbrecords_blr_struc_t(i1)=1
1866 size_gest_blr_struc_t(i1)=size_int
1867 size_variables_blr_struc_t(i1)=0
1868 DO j1=1,size(blr_struc%PANELS_U,1)
1869 CALL smumps_save_restore_blr_panel(
1870 & blr_struc%PANELS_U(j1)
1871 & ,unit,myid,"memory_save"
1872 & ,size_gest_panels_u_j1
1873 & ,size_variables_panels_u_j1
1874 & ,size_int, size_arith_dep, size_logical
1875 & ,total_file_size,total_struc_size
1876 & ,size_read,size_allocated,size_written
1877 & ,info)
1878 size_gest_panels_u=size_gest_panels_u+
1879 & size_gest_panels_u_j1
1880 size_variables_panels_u=size_variables_panels_u+
1881 & size_variables_panels_u_j1
1882 ENDDO
1883 ELSE
1884 nbrecords_blr_struc_t(i1)=2
1885 size_gest_blr_struc_t(i1)=size_int*2
1886 size_variables_blr_struc_t(i1)=0
1887 ENDIF
1888 elseif(trim(mode).EQ."save") then
1889 IF(associated(blr_struc%PANELS_U)) THEN
1890 nbrecords_blr_struc_t(i1)=1
1891 size_gest_blr_struc_t(i1)=size_int
1892 size_variables_blr_struc_t(i1)=0
1893 write(unit,iostat=err)
1894 & size(blr_struc%PANELS_U,1)
1895 if(err.ne.0) then
1896 info(1) = -72
1898 & info(2))
1899 endif
1900 DO j1=1,size(blr_struc%PANELS_U,1)
1901 CALL smumps_save_restore_blr_panel(
1902 & blr_struc%PANELS_U(j1)
1903 & ,unit,myid,"save"
1904 & ,size_gest_panels_u_j1
1905 & ,size_variables_panels_u_j1
1906 & ,size_int, size_arith_dep, size_logical
1907 & ,total_file_size,total_struc_size
1908 & ,size_read,size_allocated,size_written
1909 & ,info)
1910 IF ( info(1) .LT. 0 ) GOTO 100
1911 ENDDO
1912 ELSE
1913 nbrecords_blr_struc_t(i1)=2
1914 size_gest_blr_struc_t(i1)=size_int*2
1915 size_variables_blr_struc_t(i1)=0
1916 write(unit,iostat=err) -999
1917 if(err.ne.0) then
1918 info(1) = -72
1920 & info(2))
1921 endif
1922 IF ( info(1) .LT. 0 ) GOTO 100
1923 write(unit,iostat=err) -999
1924 if(err.ne.0) then
1925 info(1) = -72
1927 & info(2))
1928 endif
1929 IF ( info(1) .LT. 0 ) GOTO 100
1930 ENDIF
1931 elseif(trim(mode).EQ."restore") then
1932 nullify(blr_struc%PANELS_U)
1933 read(unit,iostat=err) size_array1
1934 if(err.ne.0) THEN
1935 info(1) = -75
1937 & ,info(2))
1938 endif
1939 IF ( info(1) .LT. 0 ) GOTO 100
1940 if(size_array1.EQ.-999) then
1941 nbrecords_blr_struc_t(i1)=2
1942 size_gest_blr_struc_t(i1)=size_int*2
1943 size_variables_blr_struc_t(i1)=0
1944 read(unit,iostat=err) dummy
1945 if(err.ne.0) THEN
1946 info(1) = -75
1948 & ,info(2))
1949 endif
1950 IF ( info(1) .LT. 0 ) GOTO 100
1951 else
1952 nbrecords_blr_struc_t(i1)=1
1953 size_gest_blr_struc_t(i1)=size_int
1954 size_variables_blr_struc_t(i1)=0
1955 allocate(blr_struc%PANELS_U(size_array1)
1956 & , stat=allocok)
1957 if (allocok .GT. 0) THEN
1958 info(1) = -78
1960 & total_struc_size-size_allocated
1961 & ,info(2))
1962 endif
1963 DO j1=1,size_array1
1964 CALL smumps_save_restore_blr_panel(
1965 & blr_struc%PANELS_U(j1)
1966 & ,unit,myid,"restore"
1967 & ,size_gest_panels_u_j1
1968 & ,size_variables_panels_u_j1
1969 & ,size_int, size_arith_dep, size_logical
1970 & ,total_file_size,total_struc_size
1971 & ,size_read,size_allocated,size_written
1972 & ,info)
1973 size_gest_panels_u=size_gest_panels_u+
1974 & size_gest_panels_u_j1
1975 size_variables_panels_u=size_variables_panels_u+
1976 & size_variables_panels_u_j1
1977 ENDDO
1978 endif
1979 endif
1980 CASE("CB_LRB")
1981 if(trim(mode).EQ."memory_save") then
1982 IF(associated(blr_struc%CB_LRB)) THEN
1983 nbrecords_blr_struc_t(i1)=1
1984 size_gest_blr_struc_t(i1)=size_int*2
1985 size_variables_blr_struc_t(i1)=0
1986 DO j1=1,size(blr_struc%CB_LRB,1)
1987 DO j2=1,size(blr_struc%CB_LRB,2)
1988 CALL smumps_save_restore_lrb(
1989 & blr_struc%CB_LRB(j1,j2)
1990 & ,unit,myid,"memory_save"
1991 & ,size_gest_cb_lrb_j1j2
1992 & ,size_variables_cb_lrb_j1j2
1993 & ,size_int, size_arith_dep, size_logical
1994 & ,total_file_size,total_struc_size
1995 & ,size_read,size_allocated,size_written
1996 & ,info)
1997 size_gest_cb_lrb=size_gest_cb_lrb+
1998 & size_gest_cb_lrb_j1j2
1999 size_variables_cb_lrb=size_variables_cb_lrb+
2000 & size_variables_cb_lrb_j1j2
2001 ENDDO
2002 ENDDO
2003 ELSE
2004 nbrecords_blr_struc_t(i1)=2
2005 size_gest_blr_struc_t(i1)=size_int*3
2006 size_variables_blr_struc_t(i1)=0
2007 ENDIF
2008 elseif(trim(mode).EQ."save") then
2009 IF(associated(blr_struc%CB_LRB)) THEN
2010 nbrecords_blr_struc_t(i1)=1
2011 size_gest_blr_struc_t(i1)=size_int*2
2012 size_variables_blr_struc_t(i1)=0
2013 write(unit,iostat=err)
2014 & size(blr_struc%CB_LRB,1),size(blr_struc%CB_LRB,2)
2015 if(err.ne.0) then
2016 info(1) = -72
2018 & info(2))
2019 endif
2020 DO j1=1,size(blr_struc%CB_LRB,1)
2021 DO j2=1,size(blr_struc%CB_LRB,2)
2022 CALL smumps_save_restore_lrb(
2023 & blr_struc%CB_LRB(j1,j2)
2024 & ,unit,myid,"save"
2025 & ,size_gest_cb_lrb_j1j2
2026 & ,size_variables_cb_lrb_j1j2
2027 & ,size_int, size_arith_dep, size_logical
2028 & ,total_file_size,total_struc_size
2029 & ,size_read,size_allocated,size_written
2030 & ,info)
2031 IF ( info(1) .LT. 0 ) GOTO 100
2032 ENDDO
2033 ENDDO
2034 ELSE
2035 nbrecords_blr_struc_t(i1)=2
2036 size_gest_blr_struc_t(i1)=size_int*3
2037 size_variables_blr_struc_t(i1)=0
2038 write(unit,iostat=err) -999,-998
2039 if(err.ne.0) then
2040 info(1) = -72
2042 & info(2))
2043 endif
2044 IF ( info(1) .LT. 0 ) GOTO 100
2045 write(unit,iostat=err) -999
2046 if(err.ne.0) then
2047 info(1) = -72
2049 & info(2))
2050 endif
2051 IF ( info(1) .LT. 0 ) GOTO 100
2052 ENDIF
2053 elseif(trim(mode).EQ."restore") then
2054 nullify(blr_struc%CB_LRB)
2055 read(unit,iostat=err) size_array1,size_array2
2056 if(err.ne.0) THEN
2057 info(1) = -75
2059 & ,info(2))
2060 endif
2061 IF ( info(1) .LT. 0 ) GOTO 100
2062 if(size_array1.EQ.-999) then
2063 nbrecords_blr_struc_t(i1)=2
2064 size_gest_blr_struc_t(i1)=size_int*3
2065 size_variables_blr_struc_t(i1)=0
2066 read(unit,iostat=err) dummy
2067 if(err.ne.0) THEN
2068 info(1) = -75
2070 & ,info(2))
2071 endif
2072 IF ( info(1) .LT. 0 ) GOTO 100
2073 else
2074 nbrecords_blr_struc_t(i1)=1
2075 size_gest_blr_struc_t(i1)=size_int*2
2076 size_variables_blr_struc_t(i1)=0
2077 allocate(blr_struc%CB_LRB(size_array1,size_array2)
2078 & , stat=allocok)
2079 if (allocok .GT. 0) THEN
2080 info(1) = -78
2082 & total_struc_size-size_allocated
2083 & ,info(2))
2084 endif
2085 DO j1=1,size_array1
2086 DO j2=1,size_array2
2087 CALL smumps_save_restore_lrb(
2088 & blr_struc%CB_LRB(j1,j2)
2089 & ,unit,myid,"restore"
2090 & ,size_gest_cb_lrb_j1j2
2091 & ,size_variables_cb_lrb_j1j2
2092 & ,size_int, size_arith_dep, size_logical
2093 & ,total_file_size,total_struc_size
2094 & ,size_read,size_allocated,size_written
2095 & ,info)
2096 size_gest_cb_lrb=size_gest_cb_lrb+
2097 & size_gest_cb_lrb_j1j2
2098 size_variables_cb_lrb=size_variables_cb_lrb+
2099 & size_variables_cb_lrb_j1j2
2100 ENDDO
2101 ENDDO
2102 endif
2103 endif
2104 CASE("DIAG_BLOCKS")
2105 if(trim(mode).EQ."memory_save") then
2106 IF(associated(blr_struc%DIAG_BLOCKS)) THEN
2107 nbrecords_blr_struc_t(i1)=1
2108 size_gest_blr_struc_t(i1)=size_int
2109 size_variables_blr_struc_t(i1)=0
2110 DO j1=1,size(blr_struc%DIAG_BLOCKS,1)
2111 CALL smumps_save_restore_diag_block(
2112 & blr_struc%DIAG_BLOCKS(j1)
2113 & ,unit,myid,"memory_save"
2114 & ,size_gest_diag_blocks_j1
2115 & ,size_variables_diag_blocks_j1
2116 & ,size_int, size_arith_dep
2117 & ,total_file_size,total_struc_size
2118 & ,size_read,size_allocated,size_written
2119 & ,info)
2120 size_gest_diag_blocks=size_gest_diag_blocks+
2121 & size_gest_diag_blocks_j1
2122 size_variables_diag_blocks=
2123 & size_variables_diag_blocks+
2124 & size_variables_diag_blocks_j1
2125 ENDDO
2126 ELSE
2127 nbrecords_blr_struc_t(i1)=2
2128 size_gest_blr_struc_t(i1)=size_int*2
2129 size_variables_blr_struc_t(i1)=0
2130 ENDIF
2131 elseif(trim(mode).EQ."save") then
2132 IF(associated(blr_struc%DIAG_BLOCKS)) THEN
2133 nbrecords_blr_struc_t(i1)=1
2134 size_gest_blr_struc_t(i1)=size_int
2135 size_variables_blr_struc_t(i1)=0
2136 write(unit,iostat=err)
2137 & size(blr_struc%DIAG_BLOCKS,1)
2138 if(err.ne.0) then
2139 info(1) = -72
2141 & info(2))
2142 endif
2143 DO j1=1,size(blr_struc%DIAG_BLOCKS,1)
2144 CALL smumps_save_restore_diag_block(
2145 & blr_struc%DIAG_BLOCKS(j1)
2146 & ,unit,myid,"save"
2147 & ,size_gest_diag_blocks_j1
2148 & ,size_variables_diag_blocks_j1
2149 & ,size_int, size_arith_dep
2150 & ,total_file_size,total_struc_size
2151 & ,size_read,size_allocated,size_written
2152 & ,info)
2153 IF ( info(1) .LT. 0 ) GOTO 100
2154 ENDDO
2155 ELSE
2156 nbrecords_blr_struc_t(i1)=2
2157 size_gest_blr_struc_t(i1)=size_int*2
2158 size_variables_blr_struc_t(i1)=0
2159 write(unit,iostat=err) -999
2160 if(err.ne.0) then
2161 info(1) = -72
2163 & info(2))
2164 endif
2165 IF ( info(1) .LT. 0 ) GOTO 100
2166 write(unit,iostat=err) -999
2167 if(err.ne.0) then
2168 info(1) = -72
2170 & info(2))
2171 endif
2172 IF ( info(1) .LT. 0 ) GOTO 100
2173 ENDIF
2174 elseif(trim(mode).EQ."restore") then
2175 nullify(blr_struc%DIAG_BLOCKS)
2176 read(unit,iostat=err) size_array1
2177 if(err.ne.0) THEN
2178 info(1) = -75
2180 & ,info(2))
2181 endif
2182 IF ( info(1) .LT. 0 ) GOTO 100
2183 if(size_array1.EQ.-999) then
2184 nbrecords_blr_struc_t(i1)=2
2185 size_gest_blr_struc_t(i1)=size_int*2
2186 size_variables_blr_struc_t(i1)=0
2187 read(unit,iostat=err) dummy
2188 if(err.ne.0) THEN
2189 info(1) = -75
2191 & ,info(2))
2192 endif
2193 IF ( info(1) .LT. 0 ) GOTO 100
2194 else
2195 nbrecords_blr_struc_t(i1)=1
2196 size_gest_blr_struc_t(i1)=size_int
2197 size_variables_blr_struc_t(i1)=0
2198 allocate(blr_struc%DIAG_BLOCKS(size_array1)
2199 & , stat=allocok)
2200 if (allocok .GT. 0) THEN
2201 info(1) = -78
2203 & total_struc_size-size_allocated
2204 & ,info(2))
2205 endif
2206 DO j1=1,size_array1
2207 CALL smumps_save_restore_diag_block(
2208 & blr_struc%DIAG_BLOCKS(j1)
2209 & ,unit,myid,"restore"
2210 & ,size_gest_diag_blocks_j1
2211 & ,size_variables_diag_blocks_j1
2212 & ,size_int, size_arith_dep
2213 & ,total_file_size,total_struc_size
2214 & ,size_read,size_allocated,size_written
2215 & ,info)
2216 size_gest_diag_blocks=size_gest_diag_blocks+
2217 & size_gest_diag_blocks_j1
2218 size_variables_diag_blocks=
2219 & size_variables_diag_blocks+
2220 & size_variables_diag_blocks_j1
2221 ENDDO
2222 endif
2223 endif
2224 CASE("NFS4FATHER")
2225 nbrecords_blr_struc_t(i1)=1
2226 if(trim(mode).EQ."memory_save") then
2227 size_variables_blr_struc_t(i1)=size_int
2228 elseif(trim(mode).EQ."save") then
2229 size_variables_blr_struc_t(i1)=size_int
2230 write(unit,iostat=err) blr_struc%NFS4FATHER
2231 if(err.ne.0) then
2232 info(1) = -72
2234 & info(2))
2235 endif
2236 IF ( info(1) .LT. 0 ) GOTO 100
2237 elseif(trim(mode).EQ."restore") then
2238 size_variables_blr_struc_t(i1)=size_int
2239 read(unit,iostat=err) blr_struc%NFS4FATHER
2240 if(err.ne.0) THEN
2241 info(1) = -75
2243 & ,info(2))
2244 endif
2245 IF (info(1) .LT. 0 ) GOTO 100
2246 endif
2247 CASE("M_ARRAY")
2248 if(trim(mode).EQ."restore") then
2249 nullify(blr_struc%M_ARRAY)
2250 endif
2251 CASE DEFAULT
2252 END SELECT
2253 if(trim(mode).EQ."memory_save") then
2254 nbsubrecords=int(size_variables_blr_struc_t(i1)/huge(i4))
2255 IF(nbsubrecords.GT.0) then
2256 nbrecords_blr_struc_t(i1)=nbrecords_blr_struc_t(i1)
2257 & +nbsubrecords
2258 ENDIF
2259 elseif(trim(mode).EQ."save") then
2260 size_written=size_written+size_variables_blr_struc_t(i1)
2261 & +int(size_gest_blr_struc_t(i1),kind=8)
2262#if !defined(MUMPS_F2003)
2263 size_written=size_written
2264 & +int(2*size_int*nbrecords_blr_struc_t(i1),kind=8)
2265#endif
2266 elseif(trim(mode).EQ."restore") then
2267 size_allocated=size_allocated+
2268 & size_variables_blr_struc_t(i1)
2269 size_read=size_read+size_variables_blr_struc_t(i1)
2270 & +int(size_gest_blr_struc_t(i1),kind=8)
2271#if !defined(MUMPS_F2003)
2272 size_read=size_read
2273 & +int(2*size_int*nbrecords_blr_struc_t(i1),kind=8)
2274#endif
2275 endif
2276 ENDDO
2277 if(trim(mode).EQ."memory_save") then
2278 local_size_variables=sum(size_variables_blr_struc_t)
2279 & +size_variables_panels_l
2280 & +size_variables_panels_u
2281 & +size_variables_cb_lrb
2282 & +size_variables_diag_blocks
2283 local_size_gest=sum(size_gest_blr_struc_t)
2284 & +size_gest_panels_l
2285 & +size_gest_panels_u
2286 & +size_gest_cb_lrb
2287 & +size_gest_diag_blocks
2288#if !defined(MUMPS_F2003)
2289 local_nbrecords=sum(nbrecords_blr_struc_t)
2290 local_size_gest=local_size_gest+2*size_int*local_nbrecords
2291#endif
2292 endif
2293 100 continue
2294 RETURN