VOBOZ/EightHalo: eight_halo.c

File eight_halo.c, 1.6 KB (added by rpwagner, 23 months ago)
Line 
1#include <stdio.h>
2#include <stdlib.h>
3
4int main(void){
5
6  FILE *fout = fopen("eight_halo.raw","wb");
7  int i, j, k, l, m, counter = 0, np = 4*4*4 + 8*30;
8  float *x_buf, *y_buf, *z_buf;
9  float x, y, z;
10
11  fwrite(&np,sizeof(int),1,fout);
12
13  x_buf = (float *)malloc(np*sizeof(float));
14  y_buf = (float *)malloc(np*sizeof(float));
15  z_buf = (float *)malloc(np*sizeof(float));
16
17  /* uniform grid */
18  for(i = 0; i < 4; i++){
19    x = ((float)i)/4.0+1.0/8.0;
20    for(j = 0; j < 4; j++){
21      y = ((float)j)/4.0+1.0/8.0;
22      for(k = 0; k < 4; k++){
23        z = ((float)k)/4.0+1.0/8.0;
24        x_buf[counter] = x;
25        y_buf[counter] = y;
26        z_buf[counter++] = z;
27      }
28    }   
29  }
30
31  /* blob around (0.25, 0.25, 0.25) */
32  for(i = 0; i < 2; i++){
33    for(j = 0; j < 2; j++){
34      for(k = 0; k < 2; k++){
35        for(l = 1; l < 4; l++){
36          for(m = 0; m < 10; m++){
37            x = i*0.5+0.25 + l*0.05*(1.0 - 2.0*rand()/((float)RAND_MAX));
38            y = j*0.5+0.25 + l*0.05*(1.0 - 2.0*rand()/((float)RAND_MAX));
39            z = k*0.5+0.25 + l*0.05*(1.0 - 2.0*rand()/((float)RAND_MAX));
40            x_buf[counter] = x;
41            y_buf[counter] = y;
42            z_buf[counter++] = z;
43          }
44        }
45      }
46    }
47  }
48
49  fwrite(x_buf,sizeof(float),np,fout);
50  fwrite(y_buf,sizeof(float),np,fout);
51  fwrite(z_buf,sizeof(float),np,fout);
52
53  free(y_buf);
54  free(z_buf);
55
56  fclose(fout);
57
58  /* velocities */
59  fout = fopen("eight_halo_vel.raw","wb"); 
60  fwrite(&np,sizeof(int),1,fout);
61  for(i = 0; i < np; i++){
62    x_buf[i] = 0.0;
63  }
64
65  fwrite(x_buf,sizeof(float),np,fout);
66  fwrite(x_buf,sizeof(float),np,fout);
67  fwrite(x_buf,sizeof(float),np,fout);
68  fclose(fout);
69
70  return 0;
71}