Daily_QC
calculate_zlevel.c
Go to the documentation of this file.
1 
2 #include "prototypes_new.h"
3 
4 
6 
7 {
8 extern struct zdata zdata[10];
9 extern maxdays;
10 int j,h,k;
11 extern int max_zstations;
12 int j1,j2,k1,k2;
13 
14 for(j=0;j<maxdays;j++) {
15 
16  for(k=0;k<4;k++) {
17 
18  if(zdata[j].used[k]==0) {
19 
20  j1=-1;
21 
22  if((j==0 && k==3) ||
23  (j==maxdays-1 && k==0))
24  continue;
25 
26  if((k==1 || k==2) &&
27  zdata[j].used[k-1] != 0 &&
28  zdata[j].used[k+1] != 0) {
29 
30  j1=j;
31  j2=j;
32  k1=k-1;
33  k2=k+1;
34 
35 
36  }
37 
38  if((k==0) &&
39  zdata[j].used[1] != 0 &&
40  zdata[j+1].used[3] != 0) {
41 
42  j1=j;
43  j2=j+1;
44  k1=1;
45  k2=3;
46 
47 
48  }
49 
50  if((k==3) &&
51  zdata[j].used[2] != 0 &&
52  zdata[j-1].used[0] != 0) {
53 
54  j1=j;
55  j2=j-1;
56  k1=2;
57  k2=0;
58 
59  }
60 
61  if(j1==-1)
62  continue;
63 
64  zdata[j].used[k]=6;
65 
66  for(h=0;h<max_zstations;h++) {
67 
68  if(zdata[j1].stn[h].zlevel1[k1].data >= 0 &&
69  zdata[j2].stn[h].zlevel1[k2].data >= 0) {
70 
71  zdata[j].stn[h].zlevel1[k].data=
72  (zdata[j1].stn[h].zlevel1[k1].data +
73  zdata[j2].stn[h].zlevel1[k2].data)/2;
74 
75  zdata[j].stn[h].zlevel1[k].qual=5;
76 
77  }
78 
79  if(zdata[j1].stn[h].zlevel2[k1].data >= 0 &&
80  zdata[j2].stn[h].zlevel2[k2].data >= 0) {
81 
82  zdata[j].stn[h].zlevel2[k].data=
83  (zdata[j1].stn[h].zlevel2[k1].data +
84  zdata[j2].stn[h].zlevel2[k2].data)/2;
85 
86  zdata[j].stn[h].zlevel2[k].qual=5;
87 
88  }
89 
90  }
91 
92 
93  }
94 
95 
96  }
97 
98 }
99 
100 
101 }
void calculate_zlevel()
int maxdays
Definition: daily_qc.c:85
int max_zstations
Definition: daily_qc.c:45
Definition: misc.h:200
struct ztn stn[500]
Definition: misc_new.h:442
int used[5]
Definition: misc_new.h:439
short int qual
Definition: misc_new.h:358
float data
Definition: misc_new.h:357
struct zlevel * zlevel2
Definition: misc_new.h:394
struct zlevel * zlevel1
Definition: misc_new.h:393