-
Notifications
You must be signed in to change notification settings - Fork 6
/
reverse_name.c
120 lines (91 loc) · 3.19 KB
/
reverse_name.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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include "ZZ.h"
#include "typedef.h"
#include "getput.h"
#include "name.h"
#include "bravais.h"
#include "datei.h"
#include "matrix.h"
#include "voronoi.h"
#include "autgrp.h"
#include "symm.h"
#include "base.h"
#include "zass.h"
#include "gmp.h"
#include "longtools.h"
int main (int argc, char *argv[])
{
bravais_TYP *R;
char qname[1024];
int zname[2],
i;
MP_INT aff_name;
char comment[2048];
char *affstring;
read_header (argc, argv);
if (is_option('h'))
INFO_LEVEL = optionnumber('h');
if ((is_option('h') && INFO_LEVEL != 8) || FILEANZ > 0)
{
printf("Usage: %s [-h] [-c] [-i]\n",argv[0]);
printf("\n");
printf("The program enables you to construct a space group corresponding\n");
printf("to a name as given by CARAT. The program will read the various\n");
printf("components of the name for the desired space group from stdin.\n");
printf("It will then output generators for the space group, which are\n");
printf("understood to generate the space group together with Z^n.\n");
printf("Please note: not every name is a valid name!\n");
printf("\n");
printf("Options:\n");
printf("-h : gives you this help.\n");
printf("-c : do not check the name given, ie. verify that it is a valid name.\n");
printf(" WARNING: this could lead to a wrong name in the header of the\n");
printf(" resulting group\n");
printf("-i : ignore that the name is invalid, and give a space group at least\n");
printf(" in the desired Q-class, and if exists one in the desired Z-class.\n");
printf(" If given without -c the resulting group will also indicate the valid\n");
printf(" name.\n");
printf("Note: The Q-classes in correspond to the Q-classes in degree\n");
printf(" min.1 max.1 1\n");
printf(" min.2-5,group.1-4, max.2-3 2\n");
printf(" min.6-14,group.5-25,max.4-5 3\n");
printf(" min.15-57,group.26-205,max.6-9 4\n");
printf(" min.58-169,group.206-1042,max.10-15 5\n");
printf(" min.170-667,group.1043-7636,max.16-27 6\n");
printf("\n");
printf("Cf. Name, Q_catalog, QtoZ, Extensions.\n");
if (FILEANZ == 0)
exit(0);
else
exit(31);
}
fprintf(stderr,"qname:\n");
scanf("%s",qname);
fprintf(stderr,"zname: \n");
scanf("%d %d",zname,zname+1);
fprintf(stderr,"affname: \n");
mpz_init(&aff_name);
mpz_inp_str(&aff_name,stdin,10);
if (is_option('c')){
if (is_option('i')){
i = 2;
}
else{
i = 0;
}
}
else{
if (is_option('i')){
i = 3;
}
else{
i = 1;
}
}
R = reverse_name(qname, zname, aff_name, i, is_option('i'), &affstring);
snprintf(comment,sizeof(comment),"standard group with name %s %d %d %s",
qname,zname[0],zname[1],affstring);
put_bravais(R,NULL,comment);
free(affstring);
free_bravais(R);
exit(0);
}