TYCHO  1.3.0
 All Data Structures Files Functions Variables Enumerations Enumerator
/home/kapf/tycho_docu/read_ic.c
Go to the documentation of this file.
1 /*
2  * read_ic.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_ic(int x, int y, int z) {
18  int i, j, k, tmp1;
19  double tmp;
20  char filename[200];
21  char buffer[10];
22  FILE *fd;
23 
24  //The initial density distribution.
25  sprintf(filename, "%s", dens_ic);
26  fd = fopen(filename, "r");
27  if (fd == NULL) {
28  printf("-----------------------------\n");
29  printf("No initial density file found\n");
30  printf("-----------------------------\n");
31  exit(12);
32  }
33  fgets(buffer, 100, fd);
34  fgets(buffer, 100, fd);
35  time_sim = atof(buffer);
36  fgets(buffer, 100, fd);
37  x = atoi(buffer);
38  fgets(buffer, 100, fd);
39  y = atoi(buffer);
40  fgets(buffer, 100, fd);
41  z = atoi(buffer);
42  fgets(buffer, 100, fd);
43  counter = atoi(buffer);
44  fgets(buffer, 100, fd);
45  counter_restart = atoi(buffer);
46  fseek(fd, 200, SEEK_SET);
47  for (i = 0; i < x; i++) {
48  for (j = 0; j < y; j++) {
49  for (k = 0; k < z; k++) {
50  fread(&tmp, 1, sizeof (double), fd);
51  rho[i][j][k] = tmp;
52  }
53  }
54  }
55  fclose(fd);
56 
57  //The initial temperature distribution
58  sprintf(filename, "%s", temp_ic);
59  fd = fopen(filename, "r");
60  if (fd == NULL) {
61  printf("---------------------------------\n");
62  printf("No initial temperature file found\n");
63  printf("---------------------------------\n");
64  exit(13);
65  }
66  fseek(fd, 200, SEEK_SET);
67  for (i = 0; i < x; i++) {
68  for (j = 0; j < y; j++) {
69  for (k = 0; k < z; k++) {
70  fread(&tmp, 1, sizeof (double), fd);
71  pre[i][j][k] = (tmp) * gasconstant * rho[i][j][k];
72  ;
73  }
74  }
75  }
76  fclose(fd);
77 
78  //The initial velocity distribution
79  if (intial_velocity_file == 1) {
80  sprintf(filename, "%s", vel_ic);
81  fd = fopen(filename, "r");
82  if (fd == NULL) {
83  printf("------------------------------\n");
84  printf("No initial velocity file found\n");
85  printf("------------------------------\n");
86  exit(14);
87  }
88  fseek(fd, 200, SEEK_SET);
89  for (i = 0; i < x; i++) {
90  for (j = 0; j < y; j++) {
91  for (k = 0; k < z; k++) {
92  fread(&tmp, 1, sizeof (double), fd);
93  vx[i][j][k] = tmp;
94  fread(&tmp, 1, sizeof (double), fd);
95  vy[i][j][k] = tmp;
96  fread(&tmp, 1, sizeof (double), fd);
97  vz[i][j][k] = tmp;
98  }
99  }
100  }
101  fclose(fd);
102  }
103 
104  if (with_obstacles == 1) {
105  //The initial obstacles distribution
106  sprintf(filename, "%s", obst_ic);
107  fd = fopen(filename, "r");
108  if (fd == NULL) {
109  printf("---------------------------------\n");
110  printf("No initial obstacles file found\n");
111  printf("---------------------------------\n");
112  exit(13);
113  }
114  fseek(fd, 200, SEEK_SET);
115  for (i = 0; i < x; i++) {
116  for (j = 0; j < y; j++) {
117  for (k = 0; k < z; k++) {
118  fread(&tmp1, 1, sizeof (int), fd);
119  dom[i][j][k] = tmp1;
120  }
121  }
122  }
123  fclose(fd);
124  }
125 
126  return 0;
127 }
128 
129 int read_dom(int x, int y, int z) {
130  int i, j, k, tmp1;
131  char filename[200];
132  FILE *fd;
133 
134  //The initial obstacles distribution
135  sprintf(filename, "%s", obst_ic);
136  fd = fopen(filename, "r");
137  if (fd == NULL) {
138  printf("---------------------------------\n");
139  printf("No initial obstacles file found\n");
140  printf("---------------------------------\n");
141  exit(13);
142  }
143  fseek(fd, 200, SEEK_SET);
144  for (i = 0; i < x; i++) {
145  for (j = 0; j < y; j++) {
146  for (k = 0; k < z; k++) {
147  fread(&tmp1, 1, sizeof (int), fd);
148  dom[i][j][k] = tmp1;
149  }
150  }
151  }
152  fclose(fd);
153 
154 
155  return 0;
156 }
157 
158 int read_soundemitter(int x, int y, int z) {
159  int i, j, k, tmp1;
160  char filename[200];
161  FILE *fd;
162 
163  //The initial obstacles distribution
164  sprintf(filename, "%s", sound_ic);
165  fd = fopen(filename, "r");
166  if (fd == NULL) {
167  printf("---------------------------------\n");
168  printf("No initial sound-emitter file found\n");
169  printf("---------------------------------\n");
170  exit(13);
171  }
172  fseek(fd, 200, SEEK_SET);
173  for (i = 0; i < x; i++) {
174  for (j = 0; j < y; j++) {
175  for (k = 0; k < z; k++) {
176  fread(&tmp1, 1, sizeof (int), fd);
177  soundemitter[i][j][k] = tmp1;
178  }
179  }
180  }
181  fclose(fd);
182 
183 
184  return 0;
185 }
186 int read_marker_file(int x, int y, int z) {
187  int i, j, k, tmp1;
188  char filename[200];
189  FILE *fd;
190 
191  //The initial marker distribution
192  sprintf(filename, "%s", marker_ic);
193  fd = fopen(filename, "r");
194  if (fd == NULL) {
195  printf("---------------------------------\n");
196  printf("No initial marker file found\n");
197  printf("---------------------------------\n");
198  exit(13);
199  }
200  fseek(fd, 200, SEEK_SET);
201  for (i = 0; i < x; i++) {
202  for (j = 0; j < y; j++) {
203  for (k = 0; k < z; k++) {
204  fread(&tmp1, 1, sizeof (int), fd);
205  marker[i][j][k] = tmp1;
206  }
207  }
208  }
209  fclose(fd);
210 
211 
212  return 0;
213 }
214 
215 int read_wind_file(int x, int y, int z) {
216  int i, j, k, tmp1;
217  char filename[200];
218  FILE *fd;
219 
220  //The initial marker distribution
221  sprintf(filename, "%s", wind_ic);
222  fd = fopen(filename, "r");
223  if (fd == NULL) {
224  printf("---------------------------------\n");
225  printf("No wind file found\n");
226  printf("---------------------------------\n");
227  exit(13);
228  }
229  fseek(fd, 200, SEEK_SET);
230  for (i = 0; i < x; i++) {
231  for (j = 0; j < y; j++) {
232  for (k = 0; k < z; k++) {
233  fread(&tmp1, 1, sizeof (int), fd);
234  wind_marker[i][j][k] = tmp1;
235  }
236  }
237  }
238  fclose(fd);
239 
240 
241  return 0;
242 }