PETSc version v3.15.4-864-ge36148cd4c
Fix/Edit manual page

DMNetworkAddSubnetwork

Add a subnetwork

Synopsis

#include "petscdmnetwork.h"  
PetscErrorCode DMNetworkAddSubnetwork(DM dm,const char* name,PetscInt ne,PetscInt edgelist[],PetscInt *netnum)
Collective on dm

Input Parameters

dm - the dm object
name - name of the subnetwork
ne - number of local edges of this subnetwork
edgelist - list of edges for this subnetwork

Output Parameters

netnum - global index of the subnetwork

Notes

There is no copy involved in this operation, only the pointer is referenced. The edgelist should not be destroyed before the call to DMNetworkLayoutSetUp()

A network can comprise of a single subnetwork OR multiple subnetworks. For a single subnetwork, the subnetwork can be read either in serial or parallel. For a multiple subnetworks, each subnetwork topology needs to be set on a unique rank and the communicator size needs to be at least equal to the number of subnetworks.

Example usage

Consider the following networks

1) A sigle subnetwork

 network 0:
 rank[0]:
   v0 --> v2; v1 --> v2
 rank[1]:
   v3 --> v5; v4 --> v5

The resulting input

network 0

rank[0]

ne = 2 edgelist = [0 2 | 1 2]

rank[1]

ne = 2 edgelist = [3 5 | 4 5]

2) Two subnetworks

 subnetwork 0:
 rank[0]:
   v0 --> v2; v2 --> v1; v1 --> v3;
 subnetwork 1:
 rank[1]:
   v0 --> v3; v3 --> v2; v2 --> v1;

The resulting input

subnetwork 0

rank[0]

ne = 3 edgelist = [0 2 | 2 1 | 1 3]

rank[1]

ne = 0 edgelist = NULL

subnetwork 1

rank[0]

ne = 0 edgelist = NULL

rank[1]

edgelist = [0 3 | 3 2 | 2 1]

See Also

DMNetworkCreate(), DMNetworkSetNumSubnetworks()

Level

beginner

Location

src/dm/impls/network/network.c
Index of all DMNetwork routines
Table of Contents for all manual pages
Index of all manual pages