TYCHO  1.3.0
 All Data Structures Files Functions Variables Enumerations Enumerator
/home/kapf/tycho_docu/read_restart.c
Go to the documentation of this file.
1 /*
2  * read_restart.c
3  *
4  * Author: Wolfgang Kapferer
5  */
6 
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <math.h>
10 
11 #include "variables_global.h"
12 #include "prototypes.h"
13 
17 int read_restart(int x, int y, int z) {
18  int i, j, k, tmp1;
19  double tmp;
20  char filename[200];
21  char filename1[200];
22  char buffer[10];
23  FILE *fd;
24  FILE *fd1;
25  int x1, y1, z1;
26 
27  //The density distribution.
28  sprintf(filename, "%srho_restart.tyc", output_dir);
29  fd = fopen(filename, "rb");
30  if (fd == NULL) {
31  printf("-----------------------------\n");
32  printf("No restart density file found\n");
33  printf("-----------------------------\n");
34  exit(12);
35  }
36 
37  fgets(buffer, 100, fd);
38  fgets(buffer, 100, fd);
39  time_sim = atof(buffer);
40  fgets(buffer, 100, fd);
41  x1 = atoi(buffer);
42  fgets(buffer, 100, fd);
43  y1 = atoi(buffer);
44  fgets(buffer, 100, fd);
45  z1 = atoi(buffer);
46  fgets(buffer, 100, fd);
47  counter = atoi(buffer);
48  fgets(buffer, 100, fd);
49  counter_restart = atoi(buffer);
50  fseek(fd, 200, SEEK_SET);
51  fseek(fd1, 200, SEEK_SET);
52 
53  if ((x != x1) || (y != y1) || (z != z1)) {
54  printf("Restart File dimension mismatch.");
55  exit(21);
56  }
57 
58  for (i = 0; i < x; i++) {
59  for (j = 0; j < y; j++) {
60  for (k = 0; k < z; k++) {
61  fread(&tmp, 1, sizeof (double), fd);
62  rho[i][j][k] = tmp;
63  }
64  }
65  }
66 
67  fclose(fd);
68 
69  //The temperature distribution
70  sprintf(filename, "%stemp_restart.tyc", output_dir);
71  fd = fopen(filename, "rb");
72  if (fd == NULL) {
73  printf("---------------------------------\n");
74  printf("No restart pressure file found\n");
75  printf("---------------------------------\n");
76  exit(13);
77  }
78  fseek(fd, 200, SEEK_SET);
79  for (i = 0; i < x; i++) {
80  for (j = 0; j < y; j++) {
81  for (k = 0; k < z; k++) {
82  fread(&tmp, 1, sizeof (double), fd);
83  pre[i][j][k] = tmp * (gasconstant * rho[i][j][k]);
84  }
85  }
86  }
87  fclose(fd);
88 
89 
90  sprintf(filename, "%svel_restart.tyc", output_dir);
91  fd = fopen(filename, "rb");
92  if (fd == NULL) {
93  printf("------------------------------\n");
94  printf("No restart velocity file found\n");
95  printf("------------------------------\n");
96  exit(14);
97  }
98  fseek(fd, 200, SEEK_SET);
99  for (i = 0; i < x; i++) {
100  for (j = 0; j < y; j++) {
101  for (k = 0; k < z; k++) {
102  fread(&tmp, 1, sizeof (double), fd);
103  vx[i][j][k] = tmp;
104  fread(&tmp, 1, sizeof (double), fd);
105  vy[i][j][k] = tmp;
106  fread(&tmp, 1, sizeof (double), fd);
107  vz[i][j][k] = tmp;
108  }
109  }
110  }
111  fclose(fd);
112 
113 
114  if (with_obstacles == 1) {
115  //The obstacles distribution
116  sprintf(filename, "%sdom_restart.tyc", output_dir);
117  fd = fopen(filename, "rb");
118  if (fd == NULL) {
119  printf("---------------------------------\n");
120  printf("No restart obstacles file found\n");
121  printf("---------------------------------\n");
122  exit(13);
123  }
124  fseek(fd, 200, SEEK_SET);
125  for (i = 0; i < x; i++) {
126  for (j = 0; j < y; j++) {
127  for (k = 0; k < z; k++) {
128  fread(&tmp1, 1, sizeof (int), fd);
129  dom[i][j][k] = tmp1;
130  }
131  }
132  }
133  fclose(fd);
134  }
135 
136  if (with_sound_emitter == 1) {
137  //The obstacles distribution
138  sprintf(filename, "%ssound_emitter_restart.tyc", output_dir);
139  fd = fopen(filename, "rb");
140  if (fd == NULL) {
141  printf("---------------------------------\n");
142  printf("No restart sound-emitter file found\n");
143  printf("---------------------------------\n");
144  exit(13);
145  }
146  fseek(fd, 200, SEEK_SET);
147  for (i = 0; i < x; i++) {
148  for (j = 0; j < y; j++) {
149  for (k = 0; k < z; k++) {
150  fread(&tmp1, 1, sizeof (int), fd);
151  soundemitter[i][j][k] = tmp1;
152  }
153  }
154  }
155  fclose(fd);
156 
157  //The obstacles distribution
158  sprintf(filename, "%spressure_integrated_restart.tyc", output_dir);
159  fd = fopen(filename, "rb");
160  if (fd == NULL) {
161  printf("---------------------------------\n");
162  printf("No restart pressure-integrated restart file found\n");
163  printf("---------------------------------\n");
164  exit(13);
165  }
166  fseek(fd, 200, SEEK_SET);
167  for (i = 0; i < x; i++) {
168  for (j = 0; j < y; j++) {
169  for (k = 0; k < z; k++) {
170  fread(&tmp, 1, sizeof (double), fd);
171  pressure_integrated[i][j][k] = tmp;
172  }
173  }
174  }
175  fclose(fd);
176  }
177 
178 
179  if (advection == 1) {
180  //The marker distribution
181  sprintf(filename, "%smarker_restart.tyc", output_dir);
182  fd = fopen(filename, "rb");
183  if (fd == NULL) {
184  printf("---------------------------------\n");
185  printf("No restart marker file found\n");
186  printf("---------------------------------\n");
187  exit(13);
188  }
189  fseek(fd, 200, SEEK_SET);
190  for (i = 0; i < x; i++) {
191  for (j = 0; j < y; j++) {
192  for (k = 0; k < z; k++) {
193  fread(&tmp, 1, sizeof (double), fd);
194  marker[i][j][k] = tmp;
195  }
196  }
197  }
198  fclose(fd);
199  }
200 
201  if (wind_on_off == 1) {
202  //The wind marker distribution
203  sprintf(filename, "%swind_restart.tyc", output_dir);
204  fd = fopen(filename, "rb");
205  if (fd == NULL) {
206  printf("---------------------------------\n");
207  printf("No restart wind marker file found\n");
208  printf("---------------------------------\n");
209  exit(13);
210  }
211  fseek(fd, 200, SEEK_SET);
212  for (i = 0; i < x; i++) {
213  for (j = 0; j < y; j++) {
214  for (k = 0; k < z; k++) {
215  fread(&tmp, 1, sizeof (double), fd);
216  wind_marker[i][j][k] = tmp;
217  }
218  }
219  }
220  fclose(fd);
221  }
222 
223  return 0;
224 }