TYCHO  1.3.0
 All Data Structures Files Functions Variables Enumerations Enumerator
/home/kapf/tycho_docu/write_ifrit.c
Go to the documentation of this file.
1 /*
2  * write_ifrit.c
3  *
4  * Author: Wolfgang Kapferer
5  */
6 
7 #include <stdio.h>
8 #include <stdint.h>
9 #include <stdlib.h>
10 #include <math.h>
11 
12 #include "variables_global.h"
13 #include "prototypes.h"
14 
20 int write_ifrit(int x, int y, int z, int counter) {
21  FILE *fd;
22  char filename[600];
23  int i, j, k;
24  int ntemp;
25  double tmp, tmp_vx, tmp_vy, tmp_vz;
26  float data1;
27 
28  sprintf(filename, "%srho_%04i.bin", output_dir, counter);
29  fd = fopen(filename, "wb");
30  if (fd == NULL) {
31  printf("-----------------------------------\n");
32  printf("The output directory does not exist\n");
33  printf("-----------------------------------\n");
34  exit(13);
35  }
36  ntemp = 12;
37  fwrite(&ntemp, 1, sizeof (int), fd);
38  fwrite(&x, 1, sizeof (int), fd);
39  fwrite(&y, 1, sizeof (int), fd);
40  fwrite(&z, 1, sizeof (int), fd);
41  fwrite(&ntemp, 1, sizeof (int), fd);
42  ntemp = 4 * x * y*z;
43  fwrite(&ntemp, 1, sizeof (int), fd);
44  for (k = 0; k < z; k++) {
45  for (j = 0; j < y; j++) {
46  for (i = 0; i < x; i++) {
47  tmp = rho[i][j][k];
48  data1 = (float) tmp;
49  fwrite(&data1, 1, sizeof (data1), fd);
50  }
51  }
52  }
53  fwrite(&ntemp, 4, 1, fd);
54  fclose(fd);
55 
56  sprintf(filename, "%stemp_%04i.bin", output_dir, counter);
57  fd = fopen(filename, "wb");
58  if (fd == NULL) {
59  printf("-----------------------------------\n");
60  printf("The output directory does not exist\n");
61  printf("-----------------------------------\n");
62  exit(13);
63  }
64  ntemp = 12;
65  fwrite(&ntemp, 1, sizeof (int), fd);
66  fwrite(&x, 1, sizeof (int), fd);
67  fwrite(&y, 1, sizeof (int), fd);
68  fwrite(&z, 1, sizeof (int), fd);
69  fwrite(&ntemp, 1, sizeof (int), fd);
70  ntemp = 4 * x * y*z;
71  fwrite(&ntemp, 1, sizeof (int), fd);
72  for (k = 0; k < z; k++) {
73  for (j = 0; j < y; j++) {
74  for (i = 0; i < x; i++) {
75  tmp = pre[i][j][k] / (gasconstant * rho[i][j][k]);
76  data1 = (float) tmp;
77  fwrite(&data1, 1, sizeof (data1), fd);
78  }
79  }
80  }
81  fwrite(&ntemp, 1, sizeof (int), fd);
82  fclose(fd);
83 
84  sprintf(filename, "%spressure_%04i.bin", output_dir, counter);
85  fd = fopen(filename, "wb");
86  if (fd == NULL) {
87  printf("-----------------------------------\n");
88  printf("The output directory does not exist\n");
89  printf("-----------------------------------\n");
90  exit(13);
91  }
92  ntemp = 12;
93  fwrite(&ntemp, 1, sizeof (int), fd);
94  fwrite(&x, 1, sizeof (int), fd);
95  fwrite(&y, 1, sizeof (int), fd);
96  fwrite(&z, 1, sizeof (int), fd);
97  fwrite(&ntemp, 1, sizeof (int), fd);
98  ntemp = 4 * x * y * z;
99  fwrite(&ntemp, 1, sizeof (int), fd);
100  for (k = 0; k < z; k++) {
101  for (j = 0; j < y; j++) {
102  for (i = 0; i < x; i++) {
103  if (dom[i][j][k] == 0) tmp = pre[i][j][k];
104  if (dom[i][j][k] == 1) tmp = 0.0;
105  data1 = (float) tmp;
106  fwrite(&data1, 1, sizeof (data1), fd);
107  }
108  }
109  }
110  fwrite(&ntemp, 1, sizeof (int), fd);
111  fclose(fd);
112 
113  sprintf(filename, "%svel_%04i.bin", output_dir, counter);
114  fd = fopen(filename, "wb");
115  if (fd == NULL) {
116  printf("-----------------------------------\n");
117  printf("The output directory does not exist\n");
118  printf("-----------------------------------\n");
119  exit(13);
120  }
121  ntemp = 12;
122  fwrite(&ntemp, 1, sizeof (int), fd);
123  fwrite(&x, 1, sizeof (int), fd);
124  fwrite(&y, 1, sizeof (int), fd);
125  fwrite(&z, 1, sizeof (int), fd);
126  fwrite(&ntemp, 1, sizeof (int), fd);
127  ntemp = 4 * x * y * z;
128  fwrite(&ntemp, 1, sizeof (int), fd);
129  for (i = 0; i < x; i++) {
130  for (j = 0; j < y; j++) {
131  for (k = 0; k < z; k++) {
132  tmp_vx = vy[i][j][k];
133  data1 = (float) tmp_vx;
134  fwrite(&data1, 1, sizeof (data1), fd);
135  }
136  }
137  }
138  fwrite(&ntemp, 1, sizeof (int), fd);
139  fwrite(&ntemp, 1, sizeof (int), fd);
140  for (k = 0; k < z; k++) {
141  for (j = 0; j < y; j++) {
142  for (i = 0; i < x; i++) {
143  tmp_vy = vx[i][j][k];
144  data1 = (float) tmp_vy;
145  fwrite(&data1, 1, sizeof (data1), fd);
146  }
147  }
148  }
149  fwrite(&ntemp, 1, sizeof (int), fd);
150  fwrite(&ntemp, 1, sizeof (int), fd);
151  for (k = 0; k < z; k++) {
152  for (j = 0; j < y; j++) {
153  for (i = 0; i < x; i++) {
154  tmp_vz = vz[i][j][k];
155  data1 = (float) tmp_vz;
156  fwrite(&data1, 1, sizeof (data1), fd);
157  }
158  }
159  }
160  fwrite(&ntemp, 1, sizeof (int), fd);
161  fclose(fd);
162 
163  if (with_obstacles == 1) {
164  sprintf(filename, "%spressure_on_solid_%04i.bin", output_dir, counter);
165  fd = fopen(filename, "wb");
166  if (fd == NULL) {
167  printf("-----------------------------------\n");
168  printf("The output directory does not exist\n");
169  printf("-----------------------------------\n");
170  exit(13);
171  }
172  ntemp = 12;
173  fwrite(&ntemp, 1, sizeof (int), fd);
174  fwrite(&x, 1, sizeof (int), fd);
175  fwrite(&y, 1, sizeof (int), fd);
176  fwrite(&z, 1, sizeof (int), fd);
177  fwrite(&ntemp, 1, sizeof (int), fd);
178  ntemp = 4 * x * y * z;
179  fwrite(&ntemp, 1, sizeof (int), fd);
180  for (k = 0; k < z; k++) {
181  for (j = 0; j < y; j++) {
182  for (i = 0; i < x; i++) {
183  tmp = pressure_on_solid[i][j][k];
184  data1 = (float) tmp;
185  fwrite(&data1, 1, sizeof (data1), fd);
186  }
187  }
188  }
189  fwrite(&ntemp, 1, sizeof (int), fd);
190  fclose(fd);
191 
192  if ((with_sound_emitter == 1) && (dB_Map_ready == 1)) {
193  sprintf(filename, "%sdB_map_%04i.bin", output_dir, counter);
194  fd = fopen(filename, "wb");
195  if (fd == NULL) {
196  printf("-----------------------------------\n");
197  printf("The output directory does not exist\n");
198  printf("-----------------------------------\n");
199  exit(13);
200  }
201  ntemp = 12;
202  fwrite(&ntemp, 1, sizeof (int), fd);
203  fwrite(&x, 1, sizeof (int), fd);
204  fwrite(&y, 1, sizeof (int), fd);
205  fwrite(&z, 1, sizeof (int), fd);
206  fwrite(&ntemp, 1, sizeof (int), fd);
207  ntemp = 4 * x * y * z;
208  fwrite(&ntemp, 1, sizeof (int), fd);
209  for (k = 0; k < z; k++) {
210  for (j = 0; j < y; j++) {
211  for (i = 0; i < x; i++) {
212  tmp = dB_map[i][j][k];
213  data1 = (float) tmp;
214  fwrite(&data1, 1, sizeof (data1), fd);
215  }
216  }
217  }
218  fwrite(&ntemp, 1, sizeof (int), fd);
219  fclose(fd);
220  }
221  }
222 
223  if (advection == 1) {
224 
225  sprintf(filename, "%smarker_%04i.bin", output_dir, counter);
226  fd = fopen(filename, "wb");
227  if (fd == NULL) {
228  printf("-----------------------------------\n");
229  printf("The output directory does not exist\n");
230  printf("-----------------------------------\n");
231  exit(13);
232  }
233  ntemp = 12;
234  fwrite(&ntemp, 1, sizeof (int), fd);
235  fwrite(&x, 1, sizeof (int), fd);
236  fwrite(&y, 1, sizeof (int), fd);
237  fwrite(&z, 1, sizeof (int), fd);
238  fwrite(&ntemp, 1, sizeof (int), fd);
239  ntemp = 4 * x * y * z;
240  fwrite(&ntemp, 1, sizeof (int), fd);
241  for (k = 0; k < z; k++) {
242  for (j = 0; j < y; j++) {
243  for (i = 0; i < x; i++) {
244  tmp = marker[i][j][k];
245  data1 = (float) tmp;
246  fwrite(&data1, 1, sizeof (data1), fd);
247  }
248  }
249  }
250  fwrite(&ntemp, 1, sizeof (int), fd);
251  fclose(fd);
252 
253  }
254 
255  return 0;
256 }