Combinatorics of the fullerenes |
For various fullerenes of the form C20 to C80 systems of generators of the action of the symmetry group or of the group of rotational symmetries on the sets of vertices, faces or edges were computed in order to derive the cycle indices for these actions. (See [7] or click here. There is a standard routine for computing these generators:
INT gen_full(a,s,b) OP a,b; char *s;
a
is an INTEGER object holding the number of C-atoms
in the fullerene, which must be among 20, 24, 26, 28, 30,
32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
70 and 80. More details about the group action must be given
in *s
. The first letter of *s
indicates where the
group is acting on:
first letter of *s | action on the set of |
v | vertices |
e | edges |
f | faces. |
second letter of *s | symmetry group |
r | rotational symmetries |
s | full symmetry group. |
a
equals 40 or 44, there are
two symmetry groups discussed in [7], which
can be specified by a third letter:
third letter of *s | symmetry group |
t | T symmetry |
d | D symmetry. |
b
is a VECTOR of generators (PERMUTATIONs)
of the symmetry group.
Here is a list of all the different routines for the generators together with the files (in the subdirectory "data" needed:
INT gen_full20_vertices(a) OP a; full20vr.gen INT gen_full20_vertices_extended(a) OP a; full20v.gen INT gen_full20_edges(a) OP a; full20er.gen INT gen_full20_edges_extended(a) OP a; full20e.gen INT gen_full20_faces(a) OP a; full20fr.gen INT gen_full20_faces_extended(a) OP a; full20f.gen INT gen_full24_vertices(a) OP a; full24vr.gen INT gen_full24_vertices_extended(a) OP a; full24v.gen INT gen_full24_edges(a) OP a; full24er.gen INT gen_full24_edges_extended(a) OP a; full24e.gen INT gen_full24_faces(a) OP a; full24fr.gen INT gen_full24_faces_extended(a) OP a; full24f.gen INT gen_full26_vertices(a) OP a; full26vr.gen INT gen_full26_vertices_extended(a) OP a; full26v.gen INT gen_full26_edges(a) OP a; full26er.gen INT gen_full26_edges_extended(a) OP a; full26e.gen INT gen_full26_faces(a) OP a; full26fr.gen INT gen_full26_faces_extended(a) OP a; full26f.gen INT gen_full28_vertices(a) OP a; full28vr.gen INT gen_full28_vertices_extended(a) OP a; full28v.gen INT gen_full28_edges(a) OP a; full28er.gen INT gen_full28_edges_extended(a) OP a; full28e.gen INT gen_full28_faces(a) OP a; full28fr.gen INT gen_full28_faces_extended(a) OP a; full28f.gen INT gen_full30_vertices(a) OP a; full30vr.gen INT gen_full30_vertices_extended(a) OP a; full30v.gen INT gen_full30_edges(a) OP a; full30er.gen INT gen_full30_edges_extended(a) OP a; full30e.gen INT gen_full30_faces(a) OP a; full30fr.gen INT gen_full30_faces_extended(a) OP a; full30f.gen INT gen_full32_vertices(a) OP a; full32v.gen INT gen_full32_edges(a) OP a; full32e.gen INT gen_full32_faces(a) OP a; full32f.gen INT gen_full34_vertices(a) OP a; full34vr.gen INT gen_full34_vertices_extended(a) OP a; full34v.gen INT gen_full34_edges(a) OP a; full34er.gen INT gen_full34_edges_extended(a) OP a; full34e.gen INT gen_full34_faces(a) OP a; full34fr.gen INT gen_full34_faces_extended(a) OP a; full34f.gen INT gen_full36_vertices(a) OP a; full36vr.gen INT gen_full36_vertices_extended(a) OP a; full36v.gen INT gen_full36_edges(a) OP a; full36er.gen INT gen_full36_edges_extended(a) OP a; full36e.gen INT gen_full36_faces(a) OP a; full36fr.gen INT gen_full36_faces_extended(a) OP a; full36f.gen INT gen_full38_vertices(a) OP a; full38vr.gen INT gen_full38_vertices_extended(a) OP a; full38v.gen INT gen_full38_edges(a) OP a; full38er.gen INT gen_full38_edges_extended(a) OP a; full38e.gen INT gen_full38_faces(a) OP a; full38fr.gen INT gen_full38_faces_extended(a) OP a; full38f.gen INT gen_full40t_vertices(a) OP a; full40tvr.gen INT gen_full40t_vertices_extended(a) OP a; full40tv.gen INT gen_full40t_edges(a) OP a; full40ter.gen INT gen_full40t_edges_extended(a) OP a; full40te.gen INT gen_full40t_faces(a) OP a; full40tfr.gen INT gen_full40t_faces_extended(a) OP a; full40tf.gen INT gen_full40d_vertices(a) OP a; full40dvr.gen INT gen_full40d_vertices_extended(a) OP a; full40dv.gen INT gen_full40d_edges(a) OP a; full40der.gen INT gen_full40d_edges_extended(a) OP a; full40de.gen INT gen_full40d_faces(a) OP a; full40dfr.gen INT gen_full40d_faces_extended(a) OP a; full40df.gen INT gen_full42_vertices(a) OP a; full42v.gen INT gen_full42_edges(a) OP a; full42e.gen INT gen_full42_faces(a) OP a; full42f.gen INT gen_full44d_vertices(a) OP a; full44vr.gen INT gen_full44d_vertices_extended(a) OP a; full44v.gen INT gen_full44d_edges(a) OP a; full44er.gen INT gen_full44d_edges_extended(a) OP a; full44e.gen INT gen_full44d_faces(a) OP a; full44fr.gen INT gen_full44d_faces_extended(a) OP a; full44f.gen INT gen_full44t_vertices(a) OP a; full44tv.gen INT gen_full44t_edges(a) OP a; full44te.gen INT gen_full44t_faces(a) OP a; full44tf.gen INT gen_full46_vertices(a) OP a; full46v.gen INT gen_full46_edges(a) OP a; full46e.gen INT gen_full46_faces(a) OP a; full46f.gen INT gen_full48_vertices(a) OP a; full48v.gen INT gen_full48_edges(a) OP a; full48e.gen INT gen_full48_faces(a) OP a; full48f.gen INT gen_full50_vertices(a) OP a; full50vr.gen INT gen_full50_vertices_extended(a) OP a; full50v.gen INT gen_full50_edges(a) OP a; full50er.gen INT gen_full50_edges_extended(a) OP a; full50e.gen INT gen_full50_faces(a) OP a; full50fr.gen INT gen_full50_faces_extended(a) OP a; full50f.gen INT gen_full52_vertices(a) OP a; full52v.gen INT gen_full52_edges(a) OP a; full52e.gen INT gen_full52_faces(a) OP a; full52f.gen INT gen_full54_vertices(a) OP a; full54v.gen INT gen_full54_edges(a) OP a; full54e.gen INT gen_full54_faces(a) OP a; full54f.gen INT gen_full56_vertices(a) OP a; full56vr.gen INT gen_full56_vertices_extended(a) OP a; full56v.gen INT gen_full56_edges(a) OP a; full56er.gen INT gen_full56_edges_extended(a) OP a; full56e.gen INT gen_full56_faces(a) OP a; full56fr.gen INT gen_full56_faces_extended(a) OP a; full56f.gen INT gen_full58_vertices(a) OP a; full58vr.gen INT gen_full58_vertices_extended(a) OP a; full58v.gen INT gen_full58_edges(a) OP a; full58er.gen INT gen_full58_edges_extended(a) OP a; full58e.gen INT gen_full58_faces(a) OP a; full58fr.gen INT gen_full58_faces_extended(a) OP a; full58f.gen INT gen_full60_vertices(a) OP a; fullvr.gen INT gen_full60_vertices_extended(a) OP a; fullv.gen INT gen_full60_edges(a) OP a; fuller.gen INT gen_full60_edges_extended(a) OP a; fulle.gen INT gen_full60_faces(a) OP a; fullfr.gen INT gen_full60_faces_extended(a) OP a; fullf.gen INT gen_full60_diagonals(a) OP a; fulld.gen INT gen_full70_vertices(a) OP a; full70vr.gen INT gen_full70_vertices_extended(a) OP a; full70v.gen INT gen_full70_edges(a) OP a; full70er.gen INT gen_full70_edges_extended(a) OP a; full70e.gen INT gen_full70_faces(a) OP a; full70fr.gen INT gen_full70_faces_extended(a) OP a; full70f.gen INT gen_full80_vertices(a) OP a; full80vr.gen INT gen_full80_vertices_extended(a) OP a; full80v.gen INT gen_full80_edges(a) OP a; full80er.gen INT gen_full80_edges_extended(a) OP a; full80e.gen INT gen_full80_faces(a) OP a; full80fr.gen INT gen_full80_faces_extended(a) OP a; full80f.gen
For doing Pólya enumeration with fullerenes there is the following routine for computing the cycle indices of the symmetry groups of various fullerenes:
INT zykelind_full(a,s,b) OP a; char *s;where
a
, s
and b
must be used in the same way
as it is indicated for gen_full(a,s,b)
.
For the fullerene C60 there are some multi-dimensional cycle indices as well. These are 6-dimensional cycle indices for the simultanious action on the sets of vertices, pentagonal and hexagonal edges, pentagonal and hexagonal faces and on the set of diagonals of C60. The corresponding routines are
INT zykelind_full60(a) OP a; INT zykelind_full60_extended(a) OP a;where
a
is the 6-dimensional cycle index
of the group of all rotational symmetries, or of all
symmetries (in the _extended
version.)
By extracting some families of indeterminates and identifying different alpabets the cycle indices for the action on the sets of vertices, edges, faces or diagonals can be computed by:
INT zykelind_full60_vertices(a) OP a; INT zykelind_full60_vertices_extended(a) OP a; INT zykelind_full60_edges(a) OP a; INT zykelind_full60_edges_extended(a) OP a; INT zykelind_full60_faces(a) OP a; INT zykelind_full60_faces_extended(a) OP a; INT zykelind_full60_diagonals(a) OP a;
For chiral fullerenes (i.e. fullerenes having some symmetries which are no proper rotations) we can compute the cycle index of the alternating representation of their symmetry groups by applying
INT zykelind_full_alternating_rep(a,s,b) OP a,b; char *s;Again
a
, s
and b
must be used as above.
It can be computed by subtracting the cycle index of the
full symmetry group from the cycle index of the subgroup
of all proper rotations.
In general the cycle index of the alternating representation of a group action GX can be computed from the cycle index Z(G,X) by changing the signs of all the summands coming from odd permutations in the cycle index. The following routine
INT zykelind_alternating_representation(a) OP a;takes as an input the cycle index
a
of a group action
and changes it to the cycle index of this group action
under the alternating representation.
Combinatorics of the fullerenes |