-
Notifications
You must be signed in to change notification settings - Fork 6
/
orbrep.c
58 lines (51 loc) · 1.48 KB
/
orbrep.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#error THIS FILE IS NOT USED
#include"typedef.h"
main (int argc, char *argv[])
{
matrix_TYP **Mat, *vecs, *represent;
bravais_TYP *G;
int orb_anz;
int *subdiv;
int *c, *f;
int i,j, anz;
read_header(argc, argv);
if(FILEANZ != 2)
{
printf("usage: orbrep 'file1' 'file2',\n");
printf("where 'file1' contains a matrix_TYP and\n");
printf(" 'file2' contains a bravais_TYP\n");
if (is_option('h')){
exit(0);
}
else{
exit(31);
}
}
Mat = mget_mat (FILENAMES[0], &anz);
vecs = Mat[0];
G = get_bravais(FILENAMES[1]);
subdiv = orbit_subdivision(vecs, G, &orb_anz);
represent = init_mat(orb_anz, G->gen[0]->cols, "");
c = (int *)malloc(orb_anz *sizeof(int));
f = (int *)malloc(orb_anz *sizeof(int));
for(i=0;i<orb_anz;i++)
c[i] = 0;
for(i=0;i<vecs->rows;i++)
{
j = subdiv[i]-1;
if(c[j] == 0)
f[j] = i;
c[j]++;
}
for(i=0;i<orb_anz;i++)
{
for(j=0;j<G->gen[0]->cols;j++)
represent->array.SZ[i][j] = vecs->array.SZ[f[i]][j];
}
put_mat(represent, NULL, "representatives of the orbits", 0);
printf(" The length of the i-th orbit is:\n");
for(i=0;i<orb_anz;i++)
printf("%d ", 2 *c[i]);
printf("\n");
exit(0);
}