nauty-watercluster2(1) generate small digraphs with given underlying graph (faster alternative to directg)

SYNOPSIS

watercluster2 [,ix/] [,oy/] [,S/] [,T/] [,B/] [,C/] [,m/]

DESCRIPTION

Reads graphs in g6 code or multicode (optional) from stdin and directs them
ix : the indegree of every vertex may be at most x.
The default maximum indegree is unlimited.
oy : the outdegree of every vertex may be at most y.
The default maximum outdegree is unlimited.
S : allow that for every pair of vertices x,y at most one of the edges x-->y
and y-->x may be present. By default both of them may be present in the same graph.
T : Output directed graphs in T-code. This is a simple ASCII output format. Every line
contains one graph. First the number of vertices, then the number of directed edges and then the list of directed edges with the start first and the end then. E.g.: 3 2 0 1 2 1 means 3 vertices, 2 directed edges: 0-->1 and 2-->1
B : Output the directed graphs in a binary code. Every item of the code is an unsigned
char. The first unsigned char is the number nv of vertices. The vertices are numbered 1..nv Then the list of vertices x for which there is a directed edge 1->x follow. This list is ended by a 0. Then the list of outgoing neighbours of 2 follows -- again ended with a 0, etc. The code is complete with the 0 ending the list of outgoing neighbours of nv.
C : Do really construct all the directed graphs in memory, but don't output them. This is not
a big difference in case of restricted in- and outdegrees, because all that is done extra is that edges are directed instead of just keeping track of in- and out-degrees. This option is intended only for testing purposes to test also routines that are normally not used when counting. Things that would speed up the counting also in some cases of restricted in- and out-degrees -- like multiplying the possibilities of assigning directions to edges that can be assigned directions independent of each other (depending on the degrees of the endvertices and overlaps) -- are not included. In case of not restrictive bounds on the in- and out-degree it not really constructing the graphs can be considerably faster. In cases of restricted in- and out-degrees the only difference is that the graph isn't modified... The fact that in case of no output the graph is not modified is mainly to save time for the one case of waterclusters, where large numbers were determined. If large numbers (without output) for other cases shall be determined, one should think about adding the multiplication routines.
m : read multicode instead of g6 code

This program uses different labelling routines -- all based on the ideas of

G. Brinkmann, Generating water clusters and other directed graphs, Journal of Mathematical Chemistry 46, 1112--1121 (2009)