13 #define EXIT(N) {exit(N);}
15 void flip_data_set(
int ,
int *,
int *,
int *,
complex *);
24 int nktot,nktot2,n1,n2,n3;
30 fp = fopen(
"STATES/state1.out",
"r");
31 fscanf(fp,
"%d %d %d %d",&nktot,&n1,&n2,&n3);
36 kx = (
int *)malloc(nktot2*
sizeof(
int));
37 ky = (
int *)malloc(nktot2*
sizeof(
int));
38 kz = (
int *)malloc(nktot2*
sizeof(
int));
40 for(
int is=0;is<nstate;is++){
41 sprintf(fname,
"STATES/state%d.out",is + 1);
42 fp = fopen(fname,
"r");
43 fscanf(fp,
"%d %d %d %d",&nktot,&n1,&n2,&n3);
44 for(
int i =0;i<nktot;i++){
45 fscanf(fp,
"%lf %lf %d %d %d",&data[i].re,&data[i].im,&kx[i],&ky[i],&kz[i]);
49 flip_data_set(nktot,kx,ky,kz,data);
51 sprintf(fname,
"STATES_KPT/state%d.out",is + 1);
52 fp_out = fopen(fname,
"w");
53 fprintf(fp_out,
"%d %d %d %d\n",nktot2,n1,n2,n3);
54 for(
int i =0;i<nktot2;i++){
55 fprintf(fp_out,
"%lf %lf %d %d %d\n",data[i].re,data[i].im,kx[i],ky[i],kz[i]);
80 void flip_data_set(
int nktot,
int *kx,
int *ky,
int *kz,
complex *data)
88 for(
int i=0;i<nktot;i++){
89 if(kx[i]==0){nplane0++;}
91 int *kxt = (
int *)malloc(nplane0*
sizeof(
int));
92 int *kyt = (
int *)malloc(nplane0*
sizeof(
int));
93 int *kzt = (
int *)malloc(nplane0*
sizeof(
int));
98 for(
int i=0;i<nplane0-1;i++){
104 PRINTF(
"@@@@@@@@@@@@@@@@@@@@_Error_@@@@@@@@@@@@@@@@@@@@\n");
105 PRINTF(
"Error.1 while flipping piny dblpack data set\n");
106 PRINTF(
"@@@@@@@@@@@@@@@@@@@@_Error_@@@@@@@@@@@@@@@@@@@@\n");
110 kxt[(nplane0-1)] = kx[(nktot-1)];
111 kyt[(nplane0-1)] = ky[(nktot-1)];
112 kzt[(nplane0-1)] = kz[(nktot-1)];
113 datat[(nplane0-1)] = data[(nktot-1)];
115 if(kx[(nktot-1)]!=0 || ky[(nktot-1)] || kz[(nktot-1)]){
116 PRINTF(
"@@@@@@@@@@@@@@@@@@@@_Error_@@@@@@@@@@@@@@@@@@@@\n");
117 PRINTF(
"Error.2 while flipping piny dblpack data set\n");
118 PRINTF(
"@@@@@@@@@@@@@@@@@@@@_Error_@@@@@@@@@@@@@@@@@@@@\n");
125 for(
int i=nktot-2;i>=0;i--){
126 kx[(i+nplane0)] = kx[i];
127 ky[(i+nplane0)] = ky[i];
128 kz[(i+nplane0)] = kz[i];
129 data[(i+nplane0)] = data[i];
136 for(
int i=0;i<nplane0-1;i++){
137 int ind = nplane0-i-2;
141 data[i].re = datat[ind].re;
142 data[i].im = -datat[ind].im;
143 if(kx[i]!=0 || ky[i]<ky[i1]){
144 PRINTF(
"@@@@@@@@@@@@@@@@@@@@_Error_@@@@@@@@@@@@@@@@@@@@\n");
145 PRINTF(
"Error.3 while flipping piny dblpack data set %d %d %d %d %d\n",kx[i],ky[i],kz[i],i,ind);
146 PRINTF(
"@@@@@@@@@@@@@@@@@@@@_Error_@@@@@@@@@@@@@@@@@@@@\n");
151 kx[(nplane0-1)] = kxt[(nplane0-1)];
152 ky[(nplane0-1)] = kyt[(nplane0-1)];
153 kz[(nplane0-1)] = kzt[(nplane0-1)];
154 data[(nplane0-1)] = datat[(nplane0-1)];
156 if(nktot>=nplane0+1){
157 if(kx[nplane0]!= 0 || ky[nplane0]!=0 || kz[nplane0]!=1){
158 PRINTF(
"@@@@@@@@@@@@@@@@@@@@_Error_@@@@@@@@@@@@@@@@@@@@\n");
159 PRINTF(
"Error.4 while flipping piny dblpack data set\n");
160 PRINTF(
"@@@@@@@@@@@@@@@@@@@@_Error_@@@@@@@@@@@@@@@@@@@@\n");
165 #ifdef _GLENN_DBG_FLIP
166 int nnn = MIN(nplane0+3,nktot);
167 for(
int i=0;i<nnn;i++){
168 PRINTF(
" %d : %d %d %d \n",i,kx[i],ky[i],kz[i]);
183 int nnow = nktot + nplane0 - 1;
184 int nktot2 = 2*nktot - 1;
187 kxt = (
int *)malloc(nnow*
sizeof(
int));
188 kyt = (
int *)malloc(nnow*
sizeof(
int));
189 kzt = (
int *)malloc(nnow*
sizeof(
int));
190 for(
int i=0;i<nnow;i++){
198 int ioff = nktot2 - nnow;
199 for(
int i=0,j=ioff;i<nnow;i++,j++){
207 for(
int i=0,j=nktot2-1;i<nnow-2*nplane0+1;i++,j--){
211 data[i].re = data[j].re;
212 data[i].im = -data[j].im;