1112 use element_mod , only : nixc,nixtg
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1170
1171
1172
1173#include "implicit_f.inc"
1174
1175
1176
1177#include "param_c.inc"
1178#include "com04_c.inc"
1179
1180
1181
1182 CHARACTER(LEN = nchartitle), INTENT(IN) :: TITLE
1183 INTEGER, INTENT(IN) :: IVOLU(NIMV), ITAB(*),ITYPE, IXC(NIXC, NUMELC), IXTG(NIXTG, NUMELTG)
1185 TYPE(SURF_), INTENT(INOUT) :: SURF
1186 TYPE(MONVOL_STRUCT_), INTENT(INOUT) :: T_MONVOLN
1187
1188
1189
1190 INTEGER NSEG,ISH34,JJ,II(4),KK, IELEM_ADJ,IDX,IDX_A,IDX_B,IPAIR,NPAIR,LL
1191 INTEGER IDX1,IDX2
1192 INTEGER NEDG, SUM_ADJ
1193
1194 INTEGER, ALLOCATABLE,DIMENSION(:) :: PATHS, SIZES, CHECK_FLAG_ELEM, NB_ADJ,IAD_ADJ, LIST_ADJ_TAB
1195 INTEGER,ALLOCATABLE,DIMENSION(:) :: db_reversed, db_path
1196 INTEGER, DIMENSION(:), ALLOCATABLE :: PAIR_LIST, NB_PAIR_BY_EDGE
1197 INTEGER :: NB_NOEUD, NB_ARC, NB_COMP_CONNEXE, SUM_SIZES
1198 INTEGER(8) :: graph_ptr
1199 INTEGER :: IELEM,ICOMP, EDGES_A(5),EDGES_B(5), NB_REVERSED
1200 INTEGER :: NPT_A, NPT_B, IELEM1, IELEM2, ELTYP1, ELTYP2, NB_COMMON_NODE,
1201 . NODELIST1(4), NODELIST2(4), ELEM1ID, ELEM2ID, ELEMTG, ELEMC, IELEMTG, IELEMC
1202 LOGICAL :: lFOUND, lFOUND_ADJ
1203 INTEGER :: NB_DUPLICATED_ELTS
1204 INTEGER, DIMENSION(:), ALLOCATABLE :: DUPLICATED_ELTS
1205 CHARACTER(LEN=1024) :: FILENAME
1206 INTEGER(8) :: duplicate_ptr
1207 LOGICAL debug_output
1208 INTEGER :: NTRI, NB_CON
1209 INTEGER, DIMENSION(:), ALLOCATABLE :: IAD_COMP_CONNEX
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222 graph_ptr = 0
1223 nseg = surf%NSEG
1224 ntri = t_monvoln%NB_FILL_TRI
1225 t_monvoln%OK_REORIENT = .true.
1226
1227
1228
1229
1230
1231 IF (.NOT. t_monvoln%EDGES_BUILT) THEN
1233 ENDIF
1234 nedg = t_monvoln%NEDGE
1235
1236
1237
1238
1239
1240 nb_duplicated_elts = 0
1241 duplicate_ptr = 0
1242 CALL tab1_init(duplicate_ptr)
1243 DO jj = 1, nedg
1244 nb_con = t_monvoln%IAD_EDGE_ELEM(jj + 1) - t_monvoln%IAD_EDGE_ELEM(jj)
1245 IF (nb_con > 2) THEN
1246
1247 DO ielem1 = t_monvoln%IAD_EDGE_ELEM(jj), t_monvoln%IAD_EDGE_ELEM(jj + 1) - 1
1248 IF (t_monvoln%EDGE_ELEM(ielem1) /= 0) THEN
1249 DO ielem2 = t_monvoln%IAD_EDGE_ELEM(jj), t_monvoln%IAD_EDGE_ELEM(jj + 1) -1
1250 IF (ielem1 /= ielem2) THEN
1251 elem1id = t_monvoln%EDGE_ELEM(ielem1)
1252 elem2id = t_monvoln%EDGE_ELEM(ielem2)
1253 IF (elem1id * elem2id == 0) THEN
1254
1255
1256 cycle
1257 ENDIF
1258 eltyp1 = surf%ELTYP(elem1id)
1259 eltyp2 = surf%ELTYP(elem2id)
1260 IF (eltyp1 == eltyp2) THEN
1261 IF (eltyp1 == 7) THEN
1262
1263 nb_common_node = 0
1264 nodelist1(1:4) = (/0, ixtg(2:4,surf%ELEM(elem1id))/)
1265 nodelist2(1:4) = (/0, ixtg(2:4,surf%ELEM(elem2id))/)
1266 DO kk = 2, 4
1267 DO ll = 2, 4
1268 IF (nodelist1(kk) == nodelist2(ll)) THEN
1269 nb_common_node = nb_common_node + 1
1270 EXIT
1271 ENDIF
1272 ENDDO
1273 ENDDO
1274 IF (nb_common_node == 3) THEN
1275
1276 t_monvoln%EDGE_ELEM(ielem2) = 0
1277 nb_duplicated_elts = nb_duplicated_elts + 1
1278 CALL tab1_append(duplicate_ptr, elem1id)
1279 CALL tab1_append(duplicate_ptr, elem2id)
1280 ENDIF
1281 ENDIF
1282 ELSEIF (eltyp1 == 3) THEN
1283
1284 nb_common_node = 0
1285 nodelist1(1:4) = (/ixc(2:5,surf%ELEM(elem1id))/)
1286 nodelist2(1:4) = (/ixc(2:5,surf%ELEM(elem2id))/)
1287 DO kk = 1, 4
1288 DO ll = 1, 4
1289 IF (nodelist1(kk) == nodelist2(ll)) THEN
1290 nb_common_node = nb_common_node + 1
1291 EXIT
1292 ENDIF
1293 ENDDO
1294 ENDDO
1295 IF (nb_common_node == 4) THEN
1296
1297 t_monvoln%EDGE_ELEM(ielem2) = 0
1298 nb_duplicated_elts = nb_duplicated_elts + 1
1299 CALL tab1_append(duplicate_ptr, elem1id)
1300 CALL tab1_append(duplicate_ptr, elem2id)
1301 ENDIF
1302 ELSE
1303
1304 ielemtg = ielem2
1305 elemtg = elem2id
1306 ielemc = ielem1
1307 elemc = elem1id
1308 IF (eltyp1 == 7) THEN
1309 ielemtg = ielem1
1310 elemtg = elem1id
1311 ielemc = ielem2
1312 elemc = elem2id
1313 ENDIF
1314 nb_common_node = 0
1315 nodelist1(1:4) = (/0, ixtg(2:4,surf%ELEM(elemtg))/)
1316 nodelist2(1:4) = (/ixc(2:5,surf%ELEM(elemc))/)
1317 DO kk = 2, 4
1318 DO ll = 1, 4
1319 IF (nodelist1(kk) == nodelist2(ll)) THEN
1320 nb_common_node = nb_common_node + 1
1321 EXIT
1322 ENDIF
1323 ENDDO
1324 ENDDO
1325 IF (nb_common_node == 3) THEN
1326
1327 t_monvoln%EDGE_ELEM(ielemtg) = 0
1328 nb_duplicated_elts = nb_duplicated_elts + 1
1329 CALL tab1_append(duplicate_ptr, elemc)
1330 CALL tab1_append(duplicate_ptr, ielemtg)
1331 ENDIF
1332 ENDIF
1333 ENDIF
1334 ENDDO
1335 ENDIF
1336 ENDDO
1337 ENDIF
1338 ENDDO
1339
1340
1341
1342
1343
1344 ALLOCATE(nb_pair_by_edge(nedg))
1345 DO jj = 1, nedg
1346 nb_pair_by_edge(jj) = 0
1347 DO kk = t_monvoln%IAD_EDGE_ELEM(jj), t_monvoln%IAD_EDGE_ELEM(jj + 1) - 1
1348 IF (t_monvoln%EDGE_ELEM(kk) /= 0) THEN
1349 nb_pair_by_edge(jj) = nb_pair_by_edge(jj) + 1
1350 ENDIF
1351 ENDDO
1352 nb_pair_by_edge(jj) = (nb_pair_by_edge(jj) - 1) * nb_pair_by_edge(jj) / 2
1353 IF (nb_pair_by_edge(jj) > 1) THEN
1354 t_monvoln%OK_REORIENT = .false.
1355 ENDIF
1356 ENDDO
1357 npair = sum(nb_pair_by_edge)
1358 ALLOCATE(pair_list(2 * npair))
1359 ipair = 0
1360 DO jj = 1, nedg
1361 nb_con = t_monvoln%IAD_EDGE_ELEM(jj + 1) - t_monvoln%IAD_EDGE_ELEM(jj)
1362 DO kk = 1, nb_con
1363 DO ll = kk + 1, nb_con
1364 elem1id = t_monvoln%EDGE_ELEM(t_monvoln%IAD_EDGE_ELEM(jj) + kk - 1)
1365 elem2id = t_monvoln%EDGE_ELEM(t_monvoln%IAD_EDGE_ELEM(jj) + ll - 1)
1366 IF (elem1id .NE.0 .AND. elem2id .NE. 0) THEN
1367 pair_list(ipair + 1) = elem1id - 1
1368 pair_list(ipair + 2) = elem2id - 1
1369 ipair = ipair + 2
1370 ENDIF
1371 ENDDO
1372 ENDDO
1373 ENDDO
1374
1375
1376
1377
1378
1379
1380 nb_noeud=nseg+ntri
1381 nb_arc=npair
1382 nb_comp_connexe = 0
1383 CALL graph_build_path(nb_noeud, nb_arc, pair_list, nb_comp_connexe, graph_ptr)
1384
1385
1386
1387
1388
1389
1390 IF(.NOT.ALLOCATED(sizes))ALLOCATE(sizes(0:nb_comp_connexe))
1391 ALLOCATE(iad_comp_connex(nb_comp_connexe+1))
1392 CALL graph_get_sizes(graph_ptr, sizes(1))
1393 sum_sizes=sum(sizes(1:nb_comp_connexe),1)
1394 sizes(0)=0
1395 iad_comp_connex(1) = 1
1396 DO jj = 2, nb_comp_connexe + 1
1397 iad_comp_connex(jj) = iad_comp_connex(jj - 1) + sizes(jj - 1)
1398 ENDDO
1399 IF(.NOT.ALLOCATED(paths))ALLOCATE(paths(sum_sizes))
1400 CALL graph_get_path(graph_ptr, paths)
1401
1402
1403
1404
1405 debug_output=.false.
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467 IF(.NOT.ALLOCATED(nb_adj))ALLOCATE(nb_adj(nseg+ntri))
1468 IF(.NOT.ALLOCATED(iad_adj))ALLOCATE(iad_adj(nseg+ntri+1))
1469 CALL graph_get_nb_adj(graph_ptr, nb_adj)
1470 sum_adj=sum(nb_adj)
1471 iad_adj(1)=1
1472 DO kk=2,nseg+ntri+1
1473 iad_adj(kk)=iad_adj(kk-1)+nb_adj(kk-1)
1474 ENDDO
1475 IF(.NOT.ALLOCATED(list_adj_tab))ALLOCATE(list_adj_tab(sum_adj))
1476 CALL graph_get_adj(graph_ptr, list_adj_tab)
1477 DO kk=1,sum_adj
1478 list_adj_tab(kk)=list_adj_tab(kk)+1
1479 ENDDO
1480
1481
1482
1483
1484 debug_output=.false.
1485 if(debug_output)then
1486 nseg=surf%NSEG
1487 WRITE(filename, "(A,I0,A)") "surfmesh_before_",t_monvoln%ID,"_0000.rad"
1488 OPEN(unit = 210486, file = trim(filename), form ='formatted')
1489 WRITE(210486, '(A)') "#RADIOSS STARTER"
1490 WRITE(210486, '(A)') "/BEGIN"
1491 WRITE(210486, '(A)') "ORIENTED_SURFACE "
1492 WRITE(210486, '(A)') " 100 0"
1493 WRITE(210486, '(A)') " g mm ms"
1494 WRITE(210486, '(A)') " g mm ms"
1495 WRITE(210486, "(A5)") "/NODE"
1496 DO kk = 1, numnod
1497 WRITE(210486, "(I10, 1PG20.13, 1PG20.13, 1PG20.13)") itab(kk),x(1, kk), x(2, kk), x(3, kk)
1498 ENDDO
1499 DO kk = 1, nseg
1500 ii(1:4) = surf%NODES(kk,1:4)
1501 ish34 = surf%ELTYP(kk)
1502 IF (ish34 == 3) THEN
1503 WRITE(210486, "(A6)") "/SHELL"
1504 WRITE(210486, '(I10,I10,I10,I10,I10)') ixc(7,surf%ELEM(kk)), itab(ii(1)), itab(ii(2)),itab(ii(3)), itab(ii(4))
1505 ENDIF
1506 ENDDO
1507 DO kk = 1, nseg
1508 ii(1:4) = surf%NODES(kk,1:4)
1509 ish34 = surf%ELTYP(kk)
1510 IF (ish34 == 7) THEN
1511 WRITE(210486, "(A5)") "/SH3N"
1512 WRITE(210486, '(I10,I10,I10,I10)') ixtg(6,surf%ELEM(kk)), itab(ii(1)), itab(ii(2)),itab(ii(3))
1513 ENDIF
1514 ENDDO
1515 IF (t_monvoln%NB_FILL_TRI > 0) THEN
1516 WRITE(210486, "(A5)") "/SH3N"
1517 ENDIF
1518 DO kk = 1, t_monvoln%NB_FILL_TRI
1519 WRITE(210486, '(I10,I10,I10,I10)') kk + nseg, itab(t_monvoln%FILL_TRI(3 * (kk - 1) + 1)),
1520 . itab(t_monvoln%FILL_TRI(3 * (kk - 1) + 2)), itab(t_monvoln%FILL_TRI(3 * (kk - 1) + 3))
1521 ENDDO
1522 CLOSE (210486)
1523 endif
1524
1525
1526
1527
1528
1529 IF(.NOT.ALLOCATED(check_flag_elem))ALLOCATE(check_flag_elem(nseg+ntri))
1530 check_flag_elem(:)=0
1531
1532 IF (t_monvoln%OK_REORIENT) THEN
1533 DO icomp=1,nb_comp_connexe
1534
1535
1536 jj = 1 + paths(iad_comp_connex(icomp))
1537
1538 check_flag_elem(jj)=1
1539 nb_reversed = 0
1540
1541 DO ielem=iad_comp_connex(icomp) + 1, iad_comp_connex(icomp + 1) - 1
1542
1543
1544 jj=1+paths(ielem)
1545
1546 IF (jj <= nseg) THEN
1547 ii(1:4) = surf%NODES(jj,1:4)
1548 ish34 = surf%ELTYP(jj)
1549 IF(ish34==3.AND.ii(3)/=ii(4))THEN
1550 edges_a(1:5)=(/ ii(1:4), ii(1) /)
1551 npt_a=4
1552 ELSE
1553 edges_a(1:5)=(/ ii(1:3), ii(1), 0 /)
1554 npt_a=3
1555 ENDIF
1556 ELSE
1557 ii(1:3) = t_monvoln%FILL_TRI(3 * (jj - nseg - 1) + 1 : 3 * (jj - nseg - 1) + 3)
1558 ii(4) = ii(3)
1559 edges_a(1:5) = (/ ii(1:3), ii(1), 0 /)
1560 npt_a = 3
1561 ENDIF
1562
1563
1564
1565 idx1 = iad_adj(jj)
1566 idx2 = iad_adj(jj+1)-1
1567 lfound_adj = .false.
1568 DO kk=idx1,idx2
1569 ielem_adj = list_adj_tab(kk)
1570 IF(check_flag_elem(ielem_adj) /= 0 )THEN
1571 lfound_adj = .true.
1572 EXIT
1573 ENDIF
1574 ENDDO
1575 IF(.NOT. lfound_adj)THEN
1576 print *, "**error when forcing monvol surface orientation"
1578 return;
1579 ENDIF
1580 kk = ielem_adj
1581
1582
1583
1584 IF (kk <= nseg) THEN
1585 ii(1:4) = surf%NODES(kk,1:4)
1586 ish34 = surf%ELTYP(kk)
1587 IF(ish34==3.AND.ii(3)/=ii(4))THEN
1588 edges_b(1:5)=(/ ii(1:4), ii(1) /)
1589 npt_b=4
1590 ELSE
1591 edges_b(1:5)=(/ ii(1:3), ii(1), 0 /)
1592 npt_b=3
1593 ENDIF
1594 ELSE
1595 ii(1:3) = t_monvoln%FILL_TRI(3 * (kk - nseg - 1) + 1 : 3 * (kk - nseg - 1) + 3)
1596 ii(4) = ii(3)
1597 edges_b(1:5) = (/ ii(1:3), ii(1), 0 /)
1598 npt_b = 3
1599 ENDIF
1600
1601
1602 lfound = .false.
1603 DO idx_a=1,npt_a
1604 DO idx_b=1,npt_b
1605 IF(edges_b(idx_b)==edges_a(idx_a))THEN
1606 IF(edges_b(idx_b+1)==edges_a(idx_a+1))THEN
1607 lfound = .true.
1608 EXIT
1609 ENDIF
1610 ENDIF
1611 ENDDO
1612 IF(lfound)EXIT
1613 ENDDO
1614
1615
1616 IF(lfound)THEN
1617 IF (jj <= nseg) THEN
1618 ii(1:4) = surf%NODES(jj,1:4)
1619 IF(npt_a == 4)THEN
1620 surf%NODES(jj,1:4)=(/ ii(1), ii(4), ii(3), ii(2) /)
1621 ELSE
1622 surf%NODES(jj,1:4)=(/ ii(2), ii(1), ii(3), ii(4) /)
1623 ENDIF
1624 ELSE
1625 ii(1:3) = t_monvoln%FILL_TRI(3 * (jj - nseg - 1) + 1 : 3 * (jj - nseg - 1) + 3)
1626 ii(4) = ii(3)
1627 t_monvoln%FILL_TRI(3 * (jj - nseg - 1) + 1 : 3 * (jj - nseg - 1) + 3) = (/ ii(2), ii(1), ii(3) /)
1628 ENDIF
1629
1630 nb_reversed = nb_reversed + 1
1631 check_flag_elem(jj)=-1
1632 ENDIF
1633
1634
1635 check_flag_elem(jj)=1
1636 IF(lfound)check_flag_elem(jj)=-1
1637
1638 ENDDO
1639 ENDDO
1640 ELSE
1641 CALL ancmsg(msgid = 1882, anmode = aninfo, msgtype = msgwarning,
1642 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE)
1643 ENDIF
1644
1645
1646
1647
1648 ALLOCATE(duplicated_elts(nb_duplicated_elts * 2))
1649 CALL tab1_get(duplicate_ptr, duplicated_elts)
1650 DO jj = 1, nb_duplicated_elts
1651 elem1id = surf%ELEM(duplicated_elts(2 * (jj - 1) + 1))
1652 elem2id = surf%ELEM(duplicated_elts(2 * (jj - 1) + 2))
1653
1654 eltyp1 = surf%ELTYP(duplicated_elts(2 * (jj - 1) + 1))
1655 eltyp2 = surf%ELTYP(duplicated_elts(2 * (jj - 1) + 2))
1656 IF (eltyp1 == eltyp2) THEN
1657 ii(1:4) = surf%NODES(elem1id, 1:4)
1658 IF (eltyp1 == 7) THEN
1659
1660 surf%NODES(elem2id, 1:4) = (/ ii(2), ii(1), ii(3), ii(4) /)
1661 ELSE
1662
1663 surf%NODES(elem2id, 1:4) = (/ ii(1), ii(4), ii(3), ii(2) /)
1664 ENDIF
1665 ELSE
1666
1667 ii(1:4) = surf%NODES(elem2id,1:4)
1668 edges_a(1:5) = (/ ii(1:3), ii(1), 0 /)
1669 npt_a = 3
1670 ii(1:4) = surf%NODES(elem1id,1:4)
1671 edges_b(1:5) = (/ ii(1:4), ii(1) /)
1672 npt_b = 4
1673
1674 lfound = .false.
1675 DO idx_a=1,npt_a
1676 DO idx_b=1,npt_b
1677 IF(edges_b(idx_b)==edges_a(idx_a))THEN
1678 IF(edges_b(idx_b+1)==edges_a(idx_a+1))THEN
1679 lfound = .true.
1680 EXIT
1681 ENDIF
1682 ENDIF
1683 ENDDO
1684 IF(lfound)EXIT
1685 ENDDO
1686 IF(lfound)THEN
1687 ii(1:4) = surf%NODES(elem2id, 1:4)
1688 IF(npt_a == 4)THEN
1689 surf%NODES(elem2id,1:4)=(/ ii(1), ii(4), ii(3), ii(2) /)
1690 ELSE
1691 surf%NODES(elem2id,1:4)=(/ ii(2), ii(1), ii(3), ii(4) /)
1692 ENDIF
1693 ENDIF
1694 ENDIF
1695 ENDDO
1696 CALL tab1_free_memory(duplicate_ptr)
1697
1698
1699
1700
1701
1702 debug_output=.false.
1703 if(debug_output)then
1704 icomp=1
1705 ALLOCATE(db_path(sizes(icomp)))
1706 do ielem=1,sizes(icomp)
1707 jj=1+paths(ielem)
1708 ii(1:4) = surf%NODES(jj,1:4)
1709 ish34 = surf%ELTYP(jj)
1710 IF(ish34==3.AND.ii(3)/=ii(4))THEN
1711 db_path(jj) = ixc(7,surf%ELEM((jj)))
1712 else
1713 db_path(jj) = ixtg(6,surf%ELEM((jj)))
1714 endif
1715 enddo
1716 print *,"____________________________________________________"
1717 print *, "there are ",sizes(icomp)," elements along the path"
1718 print *, db_path(1:sizes(icomp))
1719 print *,"____________________________________________________"
1720 deallocate(db_path)
1721 endif
1722
1723 debug_output=.false.
1724 if(debug_output)then
1725
1726 idx=0
1727 ALLOCATE(db_reversed(sizes(icomp)))
1728 do ielem=1,sizes(icomp)
1729 jj=1+paths(ielem)
1730 ii(1:4) = surf%NODES(jj,1:4)
1731 ish34 = surf%ELTYP(jj)
1732 IF(check_flag_elem(jj)==-1)THEN
1733 idx=idx+1
1734 IF(ish34==3.AND.ii(3)/=ii(4))THEN
1735 db_reversed(idx) = ixc(7,surf%ELEM((jj)))
1736 else
1737 db_reversed(idx) = ixtg(6,surf%ELEM((jj)))
1738 endif
1739 ENDIF
1740 enddo
1741 print *, "there were ",nb_reversed," element(s) reversed along the path"
1742 print *, db_reversed(1:nb_reversed)
1743 print *,"____________________________________________________"
1744 DEALLOCATE(db_reversed)
1745 endif
1746
1747
1748
1749
1750 IF(ALLOCATED(nb_adj))DEALLOCATE(nb_adj)
1751 IF(ALLOCATED(iad_adj))DEALLOCATE(iad_adj)
1752 IF(ALLOCATED(check_flag_elem))DEALLOCATE(check_flag_elem)
1753 IF(ALLOCATED(list_adj_tab))DEALLOCATE(list_adj_tab)
1754 IF(ALLOCATED(paths))DEALLOCATE(paths)
1755 IF(ALLOCATED(sizes))DEALLOCATE(sizes)
1756 IF(ALLOCATED(duplicated_elts)) DEALLOCATE(duplicated_elts)
1757 IF(ALLOCATED(pair_list)) DEALLOCATE(pair_list)
1758 IF(ALLOCATED(nb_pair_by_edge)) DEALLOCATE(nb_pair_by_edge)
1759 IF (ALLOCATED(iad_comp_connex)) DEALLOCATE(iad_comp_connex)
1760 CALL graph_free_memory(graph_ptr)
1761
1762
subroutine monvol_build_edges(t_monvoln, surf)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)