Lines Matching refs:network

30   DM_Network *network = (DM_Network *)dm->data;  in DMNetworkInitializeHeaderComponentData()  local
34 np = network->cloneshared->pEnd - network->cloneshared->pStart; in DMNetworkInitializeHeaderComponentData()
35 if (network->header) in DMNetworkInitializeHeaderComponentData()
37 network->header[p].maxcomps = defaultnumcomp; in DMNetworkInitializeHeaderComponentData()
38 PetscCall(SetUpNetworkHeaderComponentValue(dm, &network->header[p], &network->cvalue[p])); in DMNetworkInitializeHeaderComponentData()
60 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetPlex() local
63 *plexdm = network->plex; in DMNetworkGetPlex()
85 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetNumSubNetworks() local
88 if (nsubnet) *nsubnet = network->cloneshared->nsubnet; in DMNetworkGetNumSubNetworks()
89 if (Nsubnet) *Nsubnet = network->cloneshared->Nsubnet; in DMNetworkGetNumSubNetworks()
109 DM_Network *network = (DM_Network *)dm->data; in DMNetworkSetNumSubNetworks() local
112 …PetscCheck(network->cloneshared->Nsubnet == 0, PetscObjectComm((PetscObject)dm), PETSC_ERR_ARG_INC… in DMNetworkSetNumSubNetworks()
124 network->cloneshared->Nsubnet = Nsubnet; in DMNetworkSetNumSubNetworks()
125network->cloneshared->nsubnet = 0; /* initial value; will be determined by DMNetworkAddSubnetwork(… in DMNetworkSetNumSubNetworks()
126 PetscCall(PetscCalloc1(Nsubnet, &network->cloneshared->subnet)); in DMNetworkSetNumSubNetworks()
129 network->cloneshared->nsvtx = 0; in DMNetworkSetNumSubNetworks()
130 network->cloneshared->Nsvtx = 0; in DMNetworkSetNumSubNetworks()
214 DM_Network *network = (DM_Network *)dm->data; in DMNetworkAddSubnetwork() local
254 i = network->cloneshared->nsubnet; in DMNetworkAddSubnetwork()
255 …if (name) PetscCall(PetscStrncpy(network->cloneshared->subnet[i].name, name, sizeof(network->clone… in DMNetworkAddSubnetwork()
256 network->cloneshared->subnet[i].nvtx = nvtx; /* include ghost vertices */ in DMNetworkAddSubnetwork()
257 network->cloneshared->subnet[i].nedge = ne; in DMNetworkAddSubnetwork()
258 network->cloneshared->subnet[i].edgelist = edgelist; in DMNetworkAddSubnetwork()
259 network->cloneshared->subnet[i].Nvtx = Nvtx; in DMNetworkAddSubnetwork()
260 network->cloneshared->subnet[i].Nedge = Nedge; in DMNetworkAddSubnetwork()
268 network->cloneshared->subnet[i].vStart = network->cloneshared->NVertices; in DMNetworkAddSubnetwork()
269network->cloneshared->subnet[i].vEnd = network->cloneshared->subnet[i].vStart + network->clonesh… in DMNetworkAddSubnetwork()
271 network->cloneshared->nVertices += nvtx; /* include ghost vertices */ in DMNetworkAddSubnetwork()
272 network->cloneshared->NVertices += network->cloneshared->subnet[i].Nvtx; in DMNetworkAddSubnetwork()
275 network->cloneshared->subnet[i].eStart = network->cloneshared->nEdges; in DMNetworkAddSubnetwork()
276 network->cloneshared->subnet[i].eEnd = network->cloneshared->subnet[i].eStart + ne; in DMNetworkAddSubnetwork()
277 network->cloneshared->nEdges += ne; in DMNetworkAddSubnetwork()
278 network->cloneshared->NEdges += network->cloneshared->subnet[i].Nedge; in DMNetworkAddSubnetwork()
280 …PetscCall(PetscStrncpy(network->cloneshared->subnet[i].name, name, sizeof(network->cloneshared->su… in DMNetworkAddSubnetwork()
281 if (netnum) *netnum = network->cloneshared->nsubnet; in DMNetworkAddSubnetwork()
282 network->cloneshared->nsubnet++; in DMNetworkAddSubnetwork()
306 DM_Network *network = (DM_Network *)dm->data; in DMNetworkSharedVertexGetInfo() local
307 SVtx *svtx = network->cloneshared->svtx; in DMNetworkSharedVertexGetInfo()
312 PetscCall(PetscHMapIGetWithDefault(network->cloneshared->svtable, gidx_tmp + 1, 0, &i)); in DMNetworkSharedVertexGetInfo()
374 static inline PetscErrorCode TableAddSVtx(DM_Network *network, PetscInt *sedgelist, PetscInt k, Pet… in TableAddSVtx() argument
381 gidx = network->cloneshared->subnet[net].vStart + idx; in TableAddSVtx()
408 DM_Network *network = (DM_Network *)dm->data; in SharedVtxCreate() local
422 PetscCall(TableAddSVtx(network, sedgelist, k, svtas[nta], &tdata[nta], ta2sv[nta])); in SharedVtxCreate()
423 PetscCall(TableAddSVtx(network, sedgelist, k + 2, svtas[nta], &tdata[nta], ta2sv[nta])); in SharedVtxCreate()
432 …gidx = network->cloneshared->subnet[net].vStart + idx; /* global index of the vertex net.idx befor… in SharedVtxCreate()
438 gidx = network->cloneshared->subnet[net].vStart + idx; in SharedVtxCreate()
445 PetscCall(TableAddSVtx(network, sedgelist, k, svtas[ita], &tdata[ita], ta2sv[ita])); in SharedVtxCreate()
448 PetscCall(TableAddSVtx(network, sedgelist, k + 2, svtas[ita], &tdata[ita], ta2sv[ita])); in SharedVtxCreate()
458 PetscCall(TableAddSVtx(network, sedgelist, k, svtas[nta], &tdata[nta], ta2sv[nta])); in SharedVtxCreate()
459 PetscCall(TableAddSVtx(network, sedgelist, k + 2, svtas[nta], &tdata[nta], ta2sv[nta])); in SharedVtxCreate()
466 PetscCall(PetscHMapICreateWithSize(nta, &network->cloneshared->svtable)); in SharedVtxCreate()
478 svtx[nsv].gidx = network->cloneshared->NVertices; /* initialization */ in SharedVtxCreate()
503 PetscCall(PetscHMapISet(network->cloneshared->svtable, svtx[nsv].gidx + 1, nsv + 1)); in SharedVtxCreate()
512 network->cloneshared->Nsvtx = nta; in SharedVtxCreate()
513 network->cloneshared->svtx = svtx; in SharedVtxCreate()
531 DM_Network *network = (DM_Network *)dm->data; in GetEdgelist_Coupling() local
533 PetscInt *vidxlTog, Nsv, Nsubnet = network->cloneshared->Nsubnet; in GetEdgelist_Coupling()
534 PetscInt *sedgelist = network->cloneshared->sedgelist, vrange; in GetEdgelist_Coupling()
545 PetscCall(SharedVtxCreate(dm, network->cloneshared->Nsvtx, sedgelist)); in GetEdgelist_Coupling()
546 Nsv = network->cloneshared->Nsvtx; in GetEdgelist_Coupling()
547 svtx = network->cloneshared->svtx; in GetEdgelist_Coupling()
551 PetscCall(PetscMalloc1(network->cloneshared->nVertices, &vidxlTog)); in GetEdgelist_Coupling()
553 PetscCallMPI(MPI_Scan(&network->cloneshared->nVertices, &vrange, 1, MPIU_INT, MPI_SUM, comm)); in GetEdgelist_Coupling()
554 vrange -= network->cloneshared->nVertices; in GetEdgelist_Coupling()
560 network->cloneshared->nsvtx = 0; /* local num of SVtx structs, including ghosts */ in GetEdgelist_Coupling()
562 …for (idx = 0; idx < network->cloneshared->subnet[net].Nvtx; idx++) { /* Note: global subnet[net].N… in GetEdgelist_Coupling()
565 if (network->cloneshared->subnet[net].nvtx) { /* this proc owns sv_to */ in GetEdgelist_Coupling()
567 if (network->cloneshared->subnet[net_from].nvtx == 0) { in GetEdgelist_Coupling()
569 network->cloneshared->nsvtx++; in GetEdgelist_Coupling()
575 if (svtype == SVFROM && network->cloneshared->subnet[net].nvtx) { in GetEdgelist_Coupling()
577 network->cloneshared->nsvtx++; in GetEdgelist_Coupling()
579 if (network->cloneshared->subnet[net].nvtx) vidxlTog[i++] = gidx; in GetEdgelist_Coupling()
584 …sert(i == network->cloneshared->nVertices, PETSC_COMM_SELF, PETSC_ERR_ARG_NULL, "%" PetscInt_FMT "… in GetEdgelist_Coupling()
588 network->cloneshared->NVertices -= np; in GetEdgelist_Coupling()
592 for (j = 0; j < network->cloneshared->subnet[net].nedge; j++) { in GetEdgelist_Coupling()
594 …i = network->cloneshared->subnet[net].edgelist[2 * j] + (network->cloneshared->subnet… in GetEdgelist_Coupling()
598 …i = network->cloneshared->subnet[net].edgelist[2 * j + 1] + (network->cloneshared… in GetEdgelist_Coupling()
612 DM_Network *network = (DM_Network *)dm->data; in DMNetworkInitializeNonTopological() local
613 PetscInt p, pStart = network->cloneshared->pStart, pEnd = network->cloneshared->pEnd; in DMNetworkInitializeNonTopological()
619 PetscCall(PetscSectionCreate(comm, &network->DataSection)); in DMNetworkInitializeNonTopological()
620 PetscCall(PetscSectionCreate(comm, &network->DofSection)); in DMNetworkInitializeNonTopological()
621 PetscCall(PetscSectionSetChart(network->DataSection, pStart, pEnd)); in DMNetworkInitializeNonTopological()
622 PetscCall(PetscSectionSetChart(network->DofSection, pStart, pEnd)); in DMNetworkInitializeNonTopological()
627 network->header[p].ndata = 0; in DMNetworkInitializeNonTopological()
628 network->header[p].offset[0] = 0; in DMNetworkInitializeNonTopological()
629 network->header[p].offsetvarrel[0] = 0; in DMNetworkInitializeNonTopological()
630 PetscCall(PetscSectionAddDof(network->DataSection, p, network->header[p].hsize)); in DMNetworkInitializeNonTopological()
655 DM_Network *network = (DM_Network *)dm->data; in DMNetworkLayoutSetUp() local
656 …PetscInt i, j, ctr, Nsubnet = network->cloneshared->Nsubnet, np, *edges, *subnetvtx, *subne… in DMNetworkLayoutSetUp()
665 …PetscCheck(network->cloneshared->nsubnet == Nsubnet, PETSC_COMM_SELF, PETSC_ERR_ARG_INCOMP, "Must … in DMNetworkLayoutSetUp()
669 if (network->cloneshared->subnet[net].nvtx) in DMNetworkLayoutSetUp()
670 …PetscCheck(network->cloneshared->subnet[net].nvtx == network->cloneshared->subnet[net].Nvtx, PETSC… in DMNetworkLayoutSetUp()
671 network->cloneshared->subnet[net].nvtx, network->cloneshared->subnet[net].Nvtx); in DMNetworkLayoutSetUp()
678 PetscCall(PetscCalloc1(2 * network->cloneshared->nEdges, &edges)); in DMNetworkLayoutSetUp()
680 if (network->cloneshared->Nsvtx) { /* subnetworks are coupled via shared vertices */ in DMNetworkLayoutSetUp()
684 PetscCall(PetscHMapICreate(&network->cloneshared->svtable)); in DMNetworkLayoutSetUp()
687 for (j = 0; j < network->cloneshared->subnet[i].nedge; j++) { in DMNetworkLayoutSetUp()
688 …edges[2 * ctr] = network->cloneshared->subnet[i].vStart + network->cloneshared->subnet[i].edge… in DMNetworkLayoutSetUp()
689 …edges[2 * ctr + 1] = network->cloneshared->subnet[i].vStart + network->cloneshared->subnet[i].edge… in DMNetworkLayoutSetUp()
696 PetscCall(DMCreate(comm, &network->plex)); in DMNetworkLayoutSetUp()
697 PetscCall(DMSetType(network->plex, DMPLEX)); in DMNetworkLayoutSetUp()
698 PetscCall(DMSetDimension(network->plex, 1)); in DMNetworkLayoutSetUp()
700 …if (size == 1) PetscCall(DMPlexBuildFromCellList(network->plex, network->cloneshared->nEdges, PETS… in DMNetworkLayoutSetUp()
701 …else PetscCall(DMPlexBuildFromCellListParallel(network->plex, network->cloneshared->nEdges, PETSC_… in DMNetworkLayoutSetUp()
703 …PetscCall(DMPlexGetChart(network->plex, &network->cloneshared->pStart, &network->cloneshared->pEnd… in DMNetworkLayoutSetUp()
704 …PetscCall(DMPlexGetHeightStratum(network->plex, 0, &network->cloneshared->eStart, &network->clones… in DMNetworkLayoutSetUp()
705 …PetscCall(DMPlexGetHeightStratum(network->plex, 1, &network->cloneshared->vStart, &network->clones… in DMNetworkLayoutSetUp()
706 np = network->cloneshared->pEnd - network->cloneshared->pStart; in DMNetworkLayoutSetUp()
707 PetscCall(PetscCalloc2(np, &network->header, np, &network->cvalue)); in DMNetworkLayoutSetUp()
714 …PetscCall(PetscCalloc2(network->cloneshared->nEdges, &subnetedge, network->cloneshared->nVertices … in DMNetworkLayoutSetUp()
715 network->cloneshared->subnetedge = subnetedge; in DMNetworkLayoutSetUp()
716 network->cloneshared->subnetvtx = subnetvtx; in DMNetworkLayoutSetUp()
718 network->cloneshared->subnet[j].edges = subnetedge; in DMNetworkLayoutSetUp()
719 …subnetedge = PetscSafePointerPlusOffset(subnetedge, network->cloneshare… in DMNetworkLayoutSetUp()
721 network->cloneshared->subnet[j].vertices = subnetvtx; in DMNetworkLayoutSetUp()
722 …subnetvtx = PetscSafePointerPlusOffset(subnetvtx, network->clonesha… in DMNetworkLayoutSetUp()
724 network->cloneshared->svertices = subnetvtx; in DMNetworkLayoutSetUp()
727 np = network->cloneshared->eEnd - network->cloneshared->eStart; in DMNetworkLayoutSetUp()
735 for (j = 0; j < network->cloneshared->subnet[i].nedge; j++) { in DMNetworkLayoutSetUp()
737 network->header[e].index = e + globaledgeoff; /* Global edge index */ in DMNetworkLayoutSetUp()
738 network->header[e].subnetid = i; in DMNetworkLayoutSetUp()
739 network->cloneshared->subnet[i].edges[j] = e; in DMNetworkLayoutSetUp()
742 PetscCall(DMPlexGetCone(network->plex, e, &cone)); in DMNetworkLayoutSetUp()
746 network->header[v].index = edges[2 * e]; /* Global vertex index */ in DMNetworkLayoutSetUp()
747 network->header[v].subnetid = i; /* Subnetwork id */ in DMNetworkLayoutSetUp()
749network->cloneshared->subnet[i].vertices[v - network->cloneshared->vStart] = v; /* user's subnet[]… in DMNetworkLayoutSetUp()
751 …vfrom = network->cloneshared->subnet[i].edgelist[2 * ctr… in DMNetworkLayoutSetUp()
752network->cloneshared->subnet[i].vertices[vfrom] = v; … in DMNetworkLayoutSetUp()
757 network->header[v].index = edges[2 * e + 1]; /* Global vertex index */ in DMNetworkLayoutSetUp()
758 network->header[v].subnetid = i; /* Subnetwork id */ in DMNetworkLayoutSetUp()
760network->cloneshared->subnet[i].vertices[v - network->cloneshared->vStart] = v; /* user's subnet[]… in DMNetworkLayoutSetUp()
762 …vto = network->cloneshared->subnet[i].edgelist[2 * ctr +… in DMNetworkLayoutSetUp()
763network->cloneshared->subnet[i].vertices[vto] = v; … in DMNetworkLayoutSetUp()
774 for (v = network->cloneshared->vStart; v < network->cloneshared->vEnd; v++) { in DMNetworkLayoutSetUp()
776 …PetscCall(PetscHMapIGetWithDefault(network->cloneshared->svtable, network->header[v].index + 1, 0,… in DMNetworkLayoutSetUp()
777 if (i) network->cloneshared->svertices[j++] = v; in DMNetworkLayoutSetUp()
782 PetscCall(DMGetGlobalSection(network->plex, &sectiong)); in DMNetworkLayoutSetUp()
817 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetSubnetwork() local
820network->cloneshared->Nsubnet, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Subnet index %" PetscIn… in DMNetworkGetSubnetwork()
821 if (nv) *nv = network->cloneshared->subnet[netnum].nvtx; in DMNetworkGetSubnetwork()
822 if (ne) *ne = network->cloneshared->subnet[netnum].nedge; in DMNetworkGetSubnetwork()
823 if (vtx) *vtx = network->cloneshared->subnet[netnum].vertices; in DMNetworkGetSubnetwork()
824 if (edge) *edge = network->cloneshared->subnet[netnum].edges; in DMNetworkGetSubnetwork()
847 DM_Network *network = (DM_Network *)dm->data; in DMNetworkAddSharedVertices() local
848 …PetscInt i, nsubnet = network->cloneshared->Nsubnet, *sedgelist, Nsvtx = network->cloneshared->… in DMNetworkAddSharedVertices()
855 PetscCall(PetscMalloc1(2 * 4 * nsubnet, &network->cloneshared->sedgelist)); in DMNetworkAddSharedVertices()
858 sedgelist = network->cloneshared->sedgelist; in DMNetworkAddSharedVertices()
867 network->cloneshared->Nsvtx = Nsvtx; in DMNetworkAddSharedVertices()
923 DM_Network *network = (DM_Network *)dm->data; in DMNetworkRegisterComponent() local
929 …if (!network->component) PetscCall(PetscCalloc1(network->max_comps_registered, &network->component… in DMNetworkRegisterComponent()
931 for (i = 0; i < network->ncomponent; i++) { in DMNetworkRegisterComponent()
932 PetscCall(PetscStrcmp(network->component[i].name, name, &flg)); in DMNetworkRegisterComponent()
939 if (network->ncomponent == network->max_comps_registered) { in DMNetworkRegisterComponent()
941 network->max_comps_registered += 2; in DMNetworkRegisterComponent()
942 PetscCall(PetscCalloc1(network->max_comps_registered, &newcomponent)); in DMNetworkRegisterComponent()
944 for (i = 0; i < network->ncomponent; i++) { in DMNetworkRegisterComponent()
945 …PetscCall(PetscStrncpy(newcomponent[i].name, network->component[i].name, sizeof(newcomponent[i].na… in DMNetworkRegisterComponent()
946 newcomponent[i].size = network->component[i].size; in DMNetworkRegisterComponent()
949 PetscCall(PetscFree(network->component)); in DMNetworkRegisterComponent()
951 network->component = newcomponent; in DMNetworkRegisterComponent()
954 component = &network->component[network->ncomponent]; in DMNetworkRegisterComponent()
959 *key = network->ncomponent; in DMNetworkRegisterComponent()
960 network->ncomponent++; in DMNetworkRegisterComponent()
982 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetNumVertices() local
988 *nVertices = network->cloneshared->nVertices; in DMNetworkGetNumVertices()
992 *NVertices = network->cloneshared->NVertices; in DMNetworkGetNumVertices()
1015 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetNumEdges() local
1021 *nEdges = network->cloneshared->nEdges; in DMNetworkGetNumEdges()
1025 *NEdges = network->cloneshared->NEdges; in DMNetworkGetNumEdges()
1048 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetVertexRange() local
1051 if (vStart) *vStart = network->cloneshared->vStart; in DMNetworkGetVertexRange()
1052 if (vEnd) *vEnd = network->cloneshared->vEnd; in DMNetworkGetVertexRange()
1074 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetEdgeRange() local
1078 if (eStart) *eStart = network->cloneshared->eStart; in DMNetworkGetEdgeRange()
1079 if (eEnd) *eEnd = network->cloneshared->eEnd; in DMNetworkGetEdgeRange()
1085 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetIndex() local
1088 if (network->header) { in DMNetworkGetIndex()
1089 *index = network->header[p].index; in DMNetworkGetIndex()
1094 PetscCall(PetscSectionGetOffset(network->DataSection, p, &offsetp)); in DMNetworkGetIndex()
1095 header = (DMNetworkComponentHeader)(network->componentdataarray + offsetp); in DMNetworkGetIndex()
1103 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetSubnetID() local
1106 if (network->header) { in DMNetworkGetSubnetID()
1107 *subnetid = network->header[p].subnetid; in DMNetworkGetSubnetID()
1112 PetscCall(PetscSectionGetOffset(network->DataSection, p, &offsetp)); in DMNetworkGetSubnetID()
1113 header = (DMNetworkComponentHeader)(network->componentdataarray + offsetp); in DMNetworkGetSubnetID()
1184 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetNumComponents() local
1187 PetscCall(PetscSectionGetOffset(network->DataSection, p, &offset)); in DMNetworkGetNumComponents()
1188 *numcomponents = ((DMNetworkComponentHeader)(network->componentdataarray + offset))->ndata; in DMNetworkGetNumComponents()
1221 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetLocalVecOffset() local
1226 PetscCall(PetscSectionGetOffset(network->plex->localSection, p, &offsetp)); in DMNetworkGetLocalVecOffset()
1232 PetscCall(PetscSectionGetOffset(network->DataSection, p, &offsetd)); in DMNetworkGetLocalVecOffset()
1233 header = (DMNetworkComponentHeader)(network->componentdataarray + offsetd); in DMNetworkGetLocalVecOffset()
1265 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetGlobalVecOffset() local
1270 PetscCall(PetscSectionGetOffset(network->plex->globalSection, p, &offsetp)); in DMNetworkGetGlobalVecOffset()
1277 PetscCall(PetscSectionGetOffset(network->DataSection, p, &offsetd)); in DMNetworkGetGlobalVecOffset()
1278 header = (DMNetworkComponentHeader)(network->componentdataarray + offsetd); in DMNetworkGetGlobalVecOffset()
1301 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetEdgeOffset() local
1304 PetscCall(PetscSectionGetOffset(network->edge.DofSection, p, offset)); in DMNetworkGetEdgeOffset()
1326 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetVertexOffset() local
1329 p -= network->cloneshared->vStart; in DMNetworkGetVertexOffset()
1330 PetscCall(PetscSectionGetOffset(network->vertex.DofSection, p, offset)); in DMNetworkGetVertexOffset()
1361 DM_Network *network = (DM_Network *)dm->data; in DMNetworkAddComponent() local
1362 DMNetworkComponent *component = &network->component[componentkey]; in DMNetworkAddComponent()
1371 …PetscCheck(network->componentsetup == PETSC_FALSE, PetscObjectComm((PetscObject)dm), PETSC_ERR_ARG… in DMNetworkAddComponent()
1373 PetscCall(PetscSectionAddDof(network->DofSection, p, nvar)); in DMNetworkAddComponent()
1376 header = &network->header[p]; in DMNetworkAddComponent()
1377 cvalue = &network->cvalue[p]; in DMNetworkAddComponent()
1422 PetscCall(PetscSectionAddDof(network->DataSection, p, additional_size)); in DMNetworkAddComponent()
1424 header = &network->header[p]; in DMNetworkAddComponent()
1425 cvalue = &network->cvalue[p]; in DMNetworkAddComponent()
1430 PetscCall(PetscSectionAddDof(network->DataSection, p, component->size)); in DMNetworkAddComponent()
1464 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetComponent() local
1470 PetscCall(PetscSectionGetDof(network->DofSection, p, nvar)); in DMNetworkGetComponent()
1474 PetscCall(PetscSectionGetOffset(network->DataSection, p, &offset)); in DMNetworkGetComponent()
1475 header = (DMNetworkComponentHeader)(network->componentdataarray + offset); in DMNetworkGetComponent()
1481 *(void **)component = network->componentdataarray + offset; in DMNetworkGetComponent()
1495 DM_Network *network = (DM_Network *)dm->data; in DMNetworkComponentSetUp() local
1503 PetscCall(PetscSectionSetUp(network->DataSection)); in DMNetworkComponentSetUp()
1504 PetscCall(PetscSectionGetStorageSize(network->DataSection, &arr_size)); in DMNetworkComponentSetUp()
1506 PetscCall(PetscCalloc1(arr_size + 1, &network->componentdataarray)); in DMNetworkComponentSetUp()
1507 componentdataarray = network->componentdataarray; in DMNetworkComponentSetUp()
1508 for (p = network->cloneshared->pStart; p < network->cloneshared->pEnd; p++) { in DMNetworkComponentSetUp()
1509 PetscCall(PetscSectionGetOffset(network->DataSection, p, &offsetp)); in DMNetworkComponentSetUp()
1511 header = &network->header[p]; in DMNetworkComponentSetUp()
1531 cvalue = &network->cvalue[p]; in DMNetworkComponentSetUp()
1540 for (i = network->cloneshared->pStart; i < network->cloneshared->pEnd; i++) { in DMNetworkComponentSetUp()
1541 …PetscCall(PetscFree5(network->header[i].size, network->header[i].key, network->header[i].offset, n… in DMNetworkComponentSetUp()
1542 PetscCall(PetscFree(network->cvalue[i].data)); in DMNetworkComponentSetUp()
1544 PetscCall(PetscFree2(network->header, network->cvalue)); in DMNetworkComponentSetUp()
1551 DM_Network *network = (DM_Network *)dm->data; in DMNetworkVariablesSetUp() local
1554 PetscCall(PetscSectionSetUp(network->DofSection)); in DMNetworkVariablesSetUp()
1615 DM_Network *network = (DM_Network *)dm->data; in DMNetworkAssembleGraphStructures() local
1622 …PetscCall(DMNetworkSetSubMap_private(dm, network->cloneshared->vStart, network->cloneshared->vEnd,… in DMNetworkAssembleGraphStructures()
1623 …PetscCall(DMNetworkSetSubMap_private(dm, network->cloneshared->eStart, network->cloneshared->eEnd,… in DMNetworkAssembleGraphStructures()
1626 …l(DMNetworkGetSubSection_private(network->DofSection, network->cloneshared->vStart, network->clone… in DMNetworkAssembleGraphStructures()
1627 …l(DMNetworkGetSubSection_private(network->DofSection, network->cloneshared->eStart, network->clone… in DMNetworkAssembleGraphStructures()
1630 PetscCall(PetscSFGetSubSF(network->plex->sf, network->vertex.mapping, &network->vertex.sf)); in DMNetworkAssembleGraphStructures()
1632 …scSectionCreateGlobalSection(network->vertex.DofSection, network->vertex.sf, PETSC_TRUE, PETSC_FAL… in DMNetworkAssembleGraphStructures()
1633 PetscCall(PetscSFGetSubSF(network->plex->sf, network->edge.mapping, &network->edge.sf)); in DMNetworkAssembleGraphStructures()
1634 …etscSectionCreateGlobalSection(network->edge.DofSection, network->edge.sf, PETSC_TRUE, PETSC_FALSE… in DMNetworkAssembleGraphStructures()
1637 PetscCall(PetscSectionClone(network->vertex.DofSection, &network->vertex.GlobalDofSection)); in DMNetworkAssembleGraphStructures()
1639 PetscCall(PetscSectionClone(network->edge.DofSection, &network->edge.GlobalDofSection)); in DMNetworkAssembleGraphStructures()
1643 …PetscCall(PetscObjectSetName((PetscObject)network->edge.GlobalDofSection, "Global edge dof section… in DMNetworkAssembleGraphStructures()
1644 …PetscCall(PetscObjectSetName((PetscObject)network->vertex.GlobalDofSection, "Global vertex dof sec… in DMNetworkAssembleGraphStructures()
1645 …PetscCall(PetscSectionViewFromOptions(network->edge.GlobalDofSection, NULL, "-edge_global_section_… in DMNetworkAssembleGraphStructures()
1646 …PetscCall(PetscSectionViewFromOptions(network->vertex.GlobalDofSection, NULL, "-vertex_global_sect… in DMNetworkAssembleGraphStructures()
2043 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetSupportingEdges() local
2046 PetscCall(DMPlexGetSupportSize(network->plex, vertex, nedges)); in DMNetworkGetSupportingEdges()
2047 if (edges) PetscCall(DMPlexGetSupport(network->plex, vertex, edges)); in DMNetworkGetSupportingEdges()
2069 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetConnectedVertices() local
2072 PetscCall(DMPlexGetCone(network->plex, edge, vertices)); in DMNetworkGetConnectedVertices()
2098 DM_Network *network = (DM_Network *)dm->data; in DMNetworkIsSharedVertex() local
2102 PetscCall(PetscHMapIHas(network->cloneshared->svtable, gidx + 1, flag)); in DMNetworkIsSharedVertex()
2137 DM_Network *network = (DM_Network *)dm->data; in DMNetworkIsGhostVertex() local
2143 PetscCall(DMGetGlobalSection(network->plex, &sectiong)); in DMNetworkIsGhostVertex()
2177 DM_Network *network = (DM_Network *)dm->data; in DMNetworkHasJacobian() local
2178 PetscInt nVertices = network->cloneshared->nVertices; in DMNetworkHasJacobian()
2181 network->userEdgeJacobian = eflg; in DMNetworkHasJacobian()
2182 network->userVertexJacobian = vflg; in DMNetworkHasJacobian()
2184 if (eflg && !network->Je) PetscCall(PetscCalloc1(3 * network->cloneshared->nEdges, &network->Je)); in DMNetworkHasJacobian()
2186 if (vflg && !network->Jv && nVertices) { in DMNetworkHasJacobian()
2187 PetscInt i, *vptr, nedges, vStart = network->cloneshared->vStart; in DMNetworkHasJacobian()
2202 PetscCall(PetscCalloc1(2 * nedges_total + nVertices, &network->Jv)); in DMNetworkHasJacobian()
2203 network->Jvptr = vptr; in DMNetworkHasJacobian()
2226 DM_Network *network = (DM_Network *)dm->data; in DMNetworkEdgeSetMatrix() local
2229 …PetscCheck(network->Je, PetscObjectComm((PetscObject)dm), PETSC_ERR_ORDER, "Must call DMNetworkHas… in DMNetworkEdgeSetMatrix()
2232 network->Je[3 * p] = J[0]; in DMNetworkEdgeSetMatrix()
2233 network->Je[3 * p + 1] = J[1]; in DMNetworkEdgeSetMatrix()
2234 network->Je[3 * p + 2] = J[2]; in DMNetworkEdgeSetMatrix()
2258 DM_Network *network = (DM_Network *)dm->data; in DMNetworkVertexSetMatrix() local
2259 PetscInt i, *vptr, nedges, vStart = network->cloneshared->vStart; in DMNetworkVertexSetMatrix()
2263 …PetscCheck(network->Jv, PetscObjectComm((PetscObject)dm), PETSC_ERR_ORDER, "Must call DMNetworkHas… in DMNetworkVertexSetMatrix()
2266 vptr = network->Jvptr; in DMNetworkVertexSetMatrix()
2267 network->Jv[vptr[p - vStart]] = J[0]; /* Set Jacobian for this vertex */ in DMNetworkVertexSetMatrix()
2271 for (i = 1; i <= 2 * nedges; i++) network->Jv[vptr[p - vStart] + i] = J[i]; in DMNetworkVertexSetMatrix()
2398 DM_Network *network = (DM_Network *)dm->data; in DMCreateMatrix_Network_Nest() local
2407 PetscCall(PetscSectionGetConstrainedStorageSize(network->edge.GlobalDofSection, &eDof)); in DMCreateMatrix_Network_Nest()
2408 PetscCall(PetscSectionGetConstrainedStorageSize(network->vertex.GlobalDofSection, &vDof)); in DMCreateMatrix_Network_Nest()
2431 …PetscCall(CreateSubGlobalToLocalMapping_private(network->edge.GlobalDofSection, network->edge.DofS… in DMCreateMatrix_Network_Nest()
2432 …PetscCall(CreateSubGlobalToLocalMapping_private(network->vertex.GlobalDofSection, network->vertex.… in DMCreateMatrix_Network_Nest()
2464 DM_Network *network = (DM_Network *)dm->data; in DMCreateMatrix_Network() local
2487 if (!network->userEdgeJacobian && !network->userVertexJacobian) { in DMCreateMatrix_Network()
2489 PetscCall(DMCreateMatrix_Plex(network->plex, J)); in DMCreateMatrix_Network()
2495 PetscCall(DMGetGlobalSection(network->plex, &sectionGlobal)); in DMCreateMatrix_Network()
2517 PetscCall(PetscSectionGetDof(network->DofSection, e, &nrows)); in DMCreateMatrix_Network()
2524 PetscCall(PetscSectionGetDof(network->DofSection, cone[v], &ncols)); in DMCreateMatrix_Network()
2526 if (network->Je) { in DMCreateMatrix_Network()
2527 Juser = network->Je[3 * e + 1 + v]; /* Jacobian(e,v) */ in DMCreateMatrix_Network()
2535 if (network->Je) { in DMCreateMatrix_Network()
2536 Juser = network->Je[3 * e]; /* Jacobian(e,e) */ in DMCreateMatrix_Network()
2544 if (vEnd - vStart) vptr = network->Jvptr; in DMCreateMatrix_Network()
2549 PetscCall(PetscSectionGetDof(network->DofSection, v, &nrows)); in DMCreateMatrix_Network()
2567 PetscCall(PetscSectionGetDof(network->DofSection, edges[e], &ncols)); in DMCreateMatrix_Network()
2569 if (network->Jv) { in DMCreateMatrix_Network()
2570 Juser = network->Jv[vptr[v - vStart] + 2 * e + 1]; /* Jacobian(v,e) */ in DMCreateMatrix_Network()
2579 PetscCall(PetscSectionGetDof(network->DofSection, vc, &ncols)); in DMCreateMatrix_Network()
2581 if (network->Jv) { in DMCreateMatrix_Network()
2582 Juser = network->Jv[vptr[v - vStart] + 2 * e + 2]; /* Jacobian(v,vc) */ in DMCreateMatrix_Network()
2596 if (network->Jv) { in DMCreateMatrix_Network()
2597 Juser = network->Jv[vptr[v - vStart]]; /* Jacobian(v,v) */ in DMCreateMatrix_Network()
2633 PetscCall(PetscSectionGetDof(network->DofSection, e, &nrows)); in DMCreateMatrix_Network()
2641 PetscCall(PetscSectionGetDof(network->DofSection, cone[v], &ncols)); in DMCreateMatrix_Network()
2643 if (network->Je) { in DMCreateMatrix_Network()
2644 Juser = network->Je[3 * e + 1 + v]; /* Jacobian(e,v) */ in DMCreateMatrix_Network()
2651 if (network->Je) { in DMCreateMatrix_Network()
2652 Juser = network->Je[3 * e]; /* Jacobian(e,e) */ in DMCreateMatrix_Network()
2662 PetscCall(PetscSectionGetDof(network->DofSection, v, &nrows)); in DMCreateMatrix_Network()
2679 PetscCall(PetscSectionGetDof(network->DofSection, edges[e], &ncols)); in DMCreateMatrix_Network()
2681 if (network->Jv) { in DMCreateMatrix_Network()
2682 Juser = network->Jv[vptr[v - vStart] + 2 * e + 1]; /* Jacobian(v,e) */ in DMCreateMatrix_Network()
2691 PetscCall(PetscSectionGetDof(network->DofSection, vc, &ncols)); in DMCreateMatrix_Network()
2693 if (network->Jv) { in DMCreateMatrix_Network()
2694 Juser = network->Jv[vptr[v - vStart] + 2 * e + 2]; /* Jacobian(v,vc) */ in DMCreateMatrix_Network()
2702 if (network->Jv) { in DMCreateMatrix_Network()
2703 Juser = network->Jv[vptr[v - vStart]]; /* Jacobian(v,v) */ in DMCreateMatrix_Network()
2720 DM_Network *network = (DM_Network *)dm->data; in DMNetworkDestroyComponentData() local
2724 if (network->header) { in DMNetworkDestroyComponentData()
2725 np = network->cloneshared->pEnd - network->cloneshared->pStart; in DMNetworkDestroyComponentData()
2727 …PetscCall(PetscFree5(network->header[j].size, network->header[j].key, network->header[j].offset, n… in DMNetworkDestroyComponentData()
2728 PetscCall(PetscFree(network->cvalue[j].data)); in DMNetworkDestroyComponentData()
2730 PetscCall(PetscFree2(network->header, network->cvalue)); in DMNetworkDestroyComponentData()
2737 DM_Network *network = (DM_Network *)dm->data; in DMDestroy_Network() local
2750 PetscCall(PetscFree(network->Je)); in DMDestroy_Network()
2751 if (network->Jv) { in DMDestroy_Network()
2752 PetscCall(PetscFree(network->Jvptr)); in DMDestroy_Network()
2753 PetscCall(PetscFree(network->Jv)); in DMDestroy_Network()
2755 PetscCall(PetscSectionDestroy(&network->DataSection)); in DMDestroy_Network()
2756 PetscCall(PetscSectionDestroy(&network->DofSection)); in DMDestroy_Network()
2757 PetscCall(PetscFree(network->component)); in DMDestroy_Network()
2758 PetscCall(PetscFree(network->componentdataarray)); in DMDestroy_Network()
2761 PetscCall(DMDestroy(&network->plex)); /* this is cloned in DMClone_Network, so safe to destroy */ in DMDestroy_Network()
2775 PetscCall(ISLocalToGlobalMappingDestroy(&network->vertex.mapping)); in DMDestroy_Network()
2776 PetscCall(PetscSectionDestroy(&network->vertex.DofSection)); in DMDestroy_Network()
2777 PetscCall(PetscSectionDestroy(&network->vertex.GlobalDofSection)); in DMDestroy_Network()
2778 PetscCall(PetscSFDestroy(&network->vertex.sf)); in DMDestroy_Network()
2780 PetscCall(ISLocalToGlobalMappingDestroy(&network->edge.mapping)); in DMDestroy_Network()
2781 PetscCall(PetscSectionDestroy(&network->edge.DofSection)); in DMDestroy_Network()
2782 PetscCall(PetscSectionDestroy(&network->edge.GlobalDofSection)); in DMDestroy_Network()
2783 PetscCall(PetscSFDestroy(&network->edge.sf)); in DMDestroy_Network()
2785 PetscCall(ISDestroy(&network->vieweroptions.viewranks)); in DMDestroy_Network()
2787 if (--network->cloneshared->refct <= 0) { in DMDestroy_Network()
2790 PetscCall(PetscFree(network->cloneshared->vltog)); in DMDestroy_Network()
2791 …for (j = 0; j < network->cloneshared->Nsvtx; j++) PetscCall(PetscFree(network->cloneshared->svtx[j… in DMDestroy_Network()
2792 PetscCall(PetscFree(network->cloneshared->svtx)); in DMDestroy_Network()
2793 PetscCall(PetscFree2(network->cloneshared->subnetedge, network->cloneshared->subnetvtx)); in DMDestroy_Network()
2794 PetscCall(PetscHMapIDestroy(&network->cloneshared->svtable)); in DMDestroy_Network()
2795 PetscCall(PetscFree(network->cloneshared->subnet)); in DMDestroy_Network()
2796 PetscCall(PetscFree(network->cloneshared)); in DMDestroy_Network()
2798 …PetscCall(PetscFree(network)); /* Always freed as this structure is copied in a clone, not clonesh… in DMDestroy_Network()
2804 DM_Network *network = (DM_Network *)dm->data; in DMGlobalToLocalBegin_Network() local
2807 PetscCall(DMGlobalToLocalBegin(network->plex, g, mode, l)); in DMGlobalToLocalBegin_Network()
2813 DM_Network *network = (DM_Network *)dm->data; in DMGlobalToLocalEnd_Network() local
2816 PetscCall(DMGlobalToLocalEnd(network->plex, g, mode, l)); in DMGlobalToLocalEnd_Network()
2822 DM_Network *network = (DM_Network *)dm->data; in DMLocalToGlobalBegin_Network() local
2825 PetscCall(DMLocalToGlobalBegin(network->plex, l, mode, g)); in DMLocalToGlobalBegin_Network()
2831 DM_Network *network = (DM_Network *)dm->data; in DMLocalToGlobalEnd_Network() local
2834 PetscCall(DMLocalToGlobalEnd(network->plex, l, mode, g)); in DMLocalToGlobalEnd_Network()
2856 DM_Network *network = (DM_Network *)dm->data; in DMNetworkGetVertexLocalToGlobalOrdering() local
2857 PetscInt *vltog = network->cloneshared->vltog; in DMNetworkGetVertexLocalToGlobalOrdering()
2879 DM_Network *network = (DM_Network *)dm->data; in DMNetworkSetVertexLocalToGlobalOrdering() local
2897 nroots = network->cloneshared->vEnd - network->cloneshared->vStart; in DMNetworkSetVertexLocalToGlobalOrdering()
2900 network->cloneshared->vltog = vltog; in DMNetworkSetVertexLocalToGlobalOrdering()
2904 …PetscCheck(network->cloneshared->distributecalled, comm, PETSC_ERR_ARG_WRONGSTATE, "Must call DMNe… in DMNetworkSetVertexLocalToGlobalOrdering()
2905 if (network->cloneshared->vltog) PetscCall(PetscFree(network->cloneshared->vltog)); in DMNetworkSetVertexLocalToGlobalOrdering()
2907 …PetscCall(DMNetworkSetSubMap_private(dm, network->cloneshared->vStart, network->cloneshared->vEnd,… in DMNetworkSetVertexLocalToGlobalOrdering()
2908 PetscCall(PetscSFGetSubSF(network->plex->sf, network->vertex.mapping, &network->vertex.sf)); in DMNetworkSetVertexLocalToGlobalOrdering()
2909 vsf = network->vertex.sf; in DMNetworkSetVertexLocalToGlobalOrdering()
2925 network->cloneshared->vltog = vltog; in DMNetworkSetVertexLocalToGlobalOrdering()
2930 PetscCall(DMNetworkIsGhostVertex(dm, i + network->cloneshared->vStart, &ghost)); in DMNetworkSetVertexLocalToGlobalOrdering()
2973 PetscCall(DMNetworkIsGhostVertex(dm, i + network->cloneshared->vStart, &ghost)); in DMNetworkSetVertexLocalToGlobalOrdering()
2986 static inline PetscErrorCode DMISAddSize_private(DM_Network *network, PetscInt p, PetscInt numkeys,… in DMISAddSize_private() argument
2992 PetscCall(PetscSectionGetOffset(network->DataSection, p, &offset)); in DMISAddSize_private()
2993 ncomps = ((DMNetworkComponentHeader)(network->componentdataarray + offset))->ndata; in DMISAddSize_private()
2994 header = (DMNetworkComponentHeader)(network->componentdataarray + offset); in DMISAddSize_private()
3015 DM_Network *network = (DM_Network *)dm->data; in DMISComputeIdx_private() local
3019 PetscCall(PetscSectionGetOffset(network->DataSection, p, &offset)); in DMISComputeIdx_private()
3020 ncomps = ((DMNetworkComponentHeader)(network->componentdataarray + offset))->ndata; in DMISComputeIdx_private()
3021 header = (DMNetworkComponentHeader)(network->componentdataarray + offset); in DMISComputeIdx_private()
3068 DM_Network *network = (DM_Network *)dm->data; in DMNetworkCreateIS() local
3086 …for (p = estart; p < eend; p++) PetscCall(DMISAddSize_private(network, p, numkeys, keys, blocksize… in DMNetworkCreateIS()
3090 PetscCall(DMISAddSize_private(network, p, numkeys, keys, blocksize, nselectedvar, &nidx)); in DMNetworkCreateIS()
3112 DM_Network *network = (DM_Network *)dm->data; in DMISComputeLocalIdx_private() local
3116 PetscCall(PetscSectionGetOffset(network->DataSection, p, &offset)); in DMISComputeLocalIdx_private()
3117 ncomps = ((DMNetworkComponentHeader)(network->componentdataarray + offset))->ndata; in DMISComputeLocalIdx_private()
3118 header = (DMNetworkComponentHeader)(network->componentdataarray + offset); in DMISComputeLocalIdx_private()
3164 DM_Network *network = (DM_Network *)dm->data; in DMNetworkCreateLocalIS() local
3174 pstart = network->cloneshared->pStart; in DMNetworkCreateLocalIS()
3175 pend = network->cloneshared->pEnd; in DMNetworkCreateLocalIS()
3179 …for (p = pstart; p < pend; p++) PetscCall(DMISAddSize_private(network, p, numkeys, keys, blocksize… in DMNetworkCreateLocalIS()
3206 DM_Network *network = (DM_Network *)dm->data; in DMNetworkFinalizeComponents() local
3209 if (network->componentsetup) PetscFunctionReturn(PETSC_SUCCESS); in DMNetworkFinalizeComponents()
3212 PetscCall(DMSetLocalSection(network->plex, network->DofSection)); in DMNetworkFinalizeComponents()
3213 PetscCall(DMGetGlobalSection(network->plex, &network->GlobalDofSection)); in DMNetworkFinalizeComponents()
3214 network->componentsetup = PETSC_TRUE; in DMNetworkFinalizeComponents()